vue实现图书管理demo详解


Posted in Javascript onOctober 17, 2017

年后公司的项目要求用到vue.js知识,我angular没有学,node.js和react也只是了解了一点点,所以学起来比较困难。如果你想学vue.js的知识,推荐网址:http://vuejs.org/

详细内容如下:

一、图书管理demo用的知识点

1、bootstrap:http://getbootstrap.com/ 

2、vuejs:http://getbootstrap.com/ 

具体代码如下:

html部分

<div id="app" class="container">
 <table class="table table-bordered">
 <div v-for = "book in books">
  <tr>
  <th>书名</th>
  <th>书的价格</th>
  <th>书的数量</th>
  <th>小计</th>
  <th>操作</th>
  </tr>
  <tr v-for = "(index,book ) in books">
  <td>{{book.name}}</td>
  <td>{{book.price}}</td>
  <td><button @click="book.count&&book.count--">-</button><input type="text" v-model="book.count" /><button @click="book.count++">+</button></td>
  <td>{{book.price*book.count}}</td>
  <td><button class="btn btn-danger" @click="deleteBook(book)">删除</button></td>
  </tr>
  <tr>
  <td colspan="5">
  总价{{total}}
  </td>
  </tr>
 </div>
 </table>
 <div class="form-group">
 <label for="bookname" id="bookname">书名</label>
 <input type="text" v-model="list.name" class="form-control"/>
 </div>
 <div class="form-group">
 <label for="bookprice" id="bookprice">价格</label>
 <input type="text" v-model="list.price" class="form-control"/>
 </div>
 <div class="form-group">
 <label for="bookcount" id="bookcount">数量</label>
 <input type="text" v-model="list.count" class="form-control"/>
 </div>
 <div class="form-group">
 <button class="btn btn-primary" @click="add">添加</button>
 </div>
 </div>

脚本部分

<script src="js/vue.js"></script>
 <script>
 var vm = new Vue({
 el:"#app",
 data:{
  books:[
  {name:'VUE js',price:40,count:1},
  {name:'NODE js',price:20,count:1},
  {name:'REACT js',price:30,count:1},
  {name:'ANGULAR js',price:100,count:1},
  {name:'JQUERY js',price:50,count:1},
  ],
  list:{
  name:'',
  price:'',
  count:''
  }
 },
 methods:{
  deleteBook(book){
  // vue 给我们提供了一个 $remove的方法,在数组中删除
  this.books.$remove(book);
  /*this.books = this.books.filter((item)=>{
  return item != book
  })*/
  },
  add(){
  this.books.push(this.list);
  this.list = {
  name:'',
  price:'',
  count:''
  }
  }
 },
 computed:{
  total(){
  var sum = 0;
  this.books.forEach(item =>{
  sum += item.price*item.count;
  })
  return sum;
  }
 }
 });
</script>

遇到难点总结

vue实现图书管理demo详解

当数量小于0时,判断方法,解决方法有很多种,下面总结有3中方法

(一)最简单的方法

根据逻辑判断,这里要注意逻辑判断的顺序,代码如下:

<td><button @click="book.count&&book.count--">-</button><input type="text" v-model="book.count" /><button @click="book.count++">+</button></td>

(二)这里要注意this指向问题

<td><button @click="min(index,book.count)">-</button><input type="text" v-model="book.count" /><button @click="book.count++">+</button></td>

methods:{
  min(index){
  if(this.books[index].count>0){
  this.books[index].count = parseInt(this.books[index].count) - 1;
  }
  },
  deleteBook(book){
  // vue 给我们提供了一个 $remove的方法,在数组中删除
  this.books.$remove(book);
  /*this.books = this.books.filter((item)=>{
  return item != book
  })*/
  },
  add(){
  this.books.push(this.list);
  this.list = {
  name:'',
  price:'',
  count:''
  }
  }
 }

(三) v-on执行时传参问题

<td><button @click="min(book)">-</button><input type="text" v-model="book.count" /><button @click="book.count++">+</button></td>

min(book){
 if(book.count>0){
 book.count = parseInt(book.count) - 1;
 }
}

总结:

v-on执行方法的时候需要传递参数的时候添加(),如果不需要传递参数就不用加上()
如果需要传递参数,我们需要手动传入事件源 

建议:

1、如果您有充足的时间来学习vue,务必要把js基础打好,学习下angular.js

2、学会在网上找资料。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
原生JavaScript实现瀑布流布局
Jun 28 Javascript
基于JavaScript实现div层跟随滚动条滑动
Jan 12 Javascript
动态加载js、css的实例代码
May 26 Javascript
详解js中call与apply关键字的作用
Nov 21 Javascript
js判断PC端与移动端跳转
Dec 24 Javascript
浅谈react+es6+webpack的基础配置
Aug 09 Javascript
12条写出高质量JS代码的方法
Jan 07 Javascript
通过一次报错详细谈谈Point事件
May 17 Javascript
Vue高版本中一些新特性的使用详解
Sep 25 Javascript
微信小程序如何使用canvas二维码保存至手机相册
Jul 15 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
Apr 11 Javascript
vue+openlayers绘制省市边界线
Dec 24 Vue.js
基于Vue实现图书管理功能
Oct 17 #Javascript
Vue.js简易安装和快速入门(第二课)
Oct 17 #Javascript
什么是Vue.js框架 为什么选择它?
Oct 17 #Javascript
node使用Koa2搭建web项目的方法
Oct 17 #Javascript
Node 自动化部署的方法
Oct 17 #Javascript
利用JS实现scroll自定义滚动效果详解
Oct 17 #Javascript
jquery实现图片跟随鼠标的实例
Oct 17 #jQuery
You might like
php fread读取文件注意事项
2016/09/24 PHP
在php7中MongoDB实现模糊查询的方法详解
2017/05/03 PHP
javascript 动态修改样式和层叠样式表代码
2010/04/27 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
js绑定事件this指向发生改变的问题解决方法
2013/04/23 Javascript
jQuery的text()方法用法分析
2014/12/20 Javascript
JQuery菜单效果的两个实例讲解(3)
2015/09/17 Javascript
jquery  实现轮播图详解及实例代码
2016/10/12 Javascript
学习 NodeJS 第八天:Socket 通讯实例
2016/12/21 NodeJs
微信小程序 Nginx环境配置详细介绍
2017/02/14 Javascript
JS批量替换内容中关键词为超链接
2017/02/20 Javascript
Vue监听数组变化源码解析
2017/03/09 Javascript
select自定义小三角样式代码(实用总结)
2017/08/18 Javascript
彻底搞懂JavaScript中的apply和call方法(必看)
2017/09/18 Javascript
详解解决使用axios发送json后台接收不到的问题
2018/06/27 Javascript
详解小程序如何避免多次点击,重复触发事件
2019/04/08 Javascript
vue自定义指令之面板拖拽的实现
2019/04/14 Javascript
vue-router的两种模式的区别
2019/05/30 Javascript
原生JS实现贪吃蛇小游戏
2020/03/09 Javascript
[04:03]辉夜杯主赛事 12月25日RECAP精彩回顾
2015/12/26 DOTA
Python中的ConfigParser模块使用详解
2015/05/04 Python
python基于multiprocessing的多进程创建方法
2015/06/04 Python
python检索特定内容的文本文件实例
2018/06/05 Python
Python使用正则表达式分割字符串的实现方法
2019/07/16 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
python Manager 之dict KeyError问题的解决
2019/12/21 Python
Pytorch中.new()的作用详解
2020/02/18 Python
python实现定时发送邮件
2020/12/23 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
法国设计制造的扫帚和刷子:Andrée Jardin
2018/12/06 全球购物
彪马俄罗斯官网:PUMA俄罗斯
2019/07/13 全球购物
个人纪律作风整改措施思想汇报
2014/10/12 职场文书
2016年校长新年寄语
2015/08/17 职场文书
Python爬虫爬取全球疫情数据并存储到mysql数据库的步骤
2021/03/29 Python
MongoDB数据库的安装步骤
2021/06/18 MongoDB
css中有哪些方式可以隐藏页面元素及区别
2022/06/16 HTML / CSS