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 相关文章推荐
js DOM模型操作
Dec 28 Javascript
JavaScript 原型与继承说明
Jun 09 Javascript
13 个JavaScript 性能提升技巧分享
Jul 26 Javascript
javascript常见数字进制转换实例分析
Apr 21 Javascript
再次谈论Javascript中的this
Jun 23 Javascript
详细探究ES6之Proxy代理
Jul 22 Javascript
js实现非常棒的弹出div
Oct 06 Javascript
Vue.js 中的 $watch使用方法
May 25 Javascript
vue元素实现动画过渡效果
Jul 01 Javascript
vue.js添加一些触摸事件以及安装fastclick的实例
Aug 28 Javascript
vue实现同一个页面可以有多个router-view的方法
Sep 20 Javascript
vue element 关闭当前tab 跳转到上一路由操作
Jul 22 Javascript
基于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 IPV6正则表达式验证代码
2010/02/16 PHP
PHP中imagick函数的中文解释
2015/01/21 PHP
初识laravel5
2015/03/02 PHP
隐藏Nginx或Apache以及PHP的版本号的方法
2016/01/03 PHP
php生成Android客户端扫描可登录的二维码
2016/05/13 PHP
php文件系统处理方法小结
2016/05/23 PHP
一端时间轮换的广告
2006/06/26 Javascript
新手入门常用代码集锦
2007/01/11 Javascript
checkbox 多选框 联动实现代码
2008/10/22 Javascript
javascript函数中的arguments参数
2010/08/01 Javascript
input按钮的事件处理大全
2010/12/10 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
微信小程序 选项卡的简单实例
2017/05/24 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
详解使用vue-cli脚手架初始化Vue项目下的项目结构
2018/03/08 Javascript
Angular6封装http请求的步骤详解
2018/08/13 Javascript
解决vue自定义指令导致的内存泄漏问题
2020/08/04 Javascript
[01:00:52]2018DOTA2亚洲邀请赛 4.4 淘汰赛 EG vs LGD 第一场
2018/04/05 DOTA
[44:30]完美世界DOTA2联赛PWL S2 GXR vs Magma 第一场 11.25
2020/11/26 DOTA
在类Unix系统上开始Python3编程入门
2015/08/20 Python
Python数据结构与算法之字典树实现方法示例
2017/12/13 Python
Python绘制3d螺旋曲线图实例代码
2017/12/20 Python
Python基于递归和非递归算法求两个数最大公约数、最小公倍数示例
2018/05/21 Python
python实现超级马里奥
2020/03/18 Python
详解python with 上下文管理器
2020/09/02 Python
澳大利亚男士西服品牌:M.J.Bale
2018/02/06 全球购物
UNIX命令速查表
2012/03/10 面试题
年检委托书
2014/08/30 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书
泸县召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
夫妻分居协议书范本(有子女版)
2014/11/01 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
MongoDB修改oplog大小的四种方法
2022/04/11 MongoDB
如何vue使用el-table遍历循环表头和表体数据
2022/04/26 Vue.js