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 相关文章推荐
jquery弹出框的用法示例(一)
Aug 26 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
鼠标移入移出事件改变图片的分辨率的两种方法
Dec 17 Javascript
jQuery学习笔记之总体架构
Jun 03 Javascript
javascript基于prototype实现类似OOP继承的方法
Dec 16 Javascript
基于Node.js的JavaScript项目构建工具gulp的使用教程
May 20 Javascript
Angular JS 生成动态二维码的方法
Feb 23 Javascript
jQuery获取Table某列的值(推荐)
Mar 03 Javascript
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
JS对象和字符串之间互换操作实例分析
Feb 02 Javascript
jquery.pager.js分页实现详解
Jul 29 jQuery
vue中keep-alive,include的缓存问题
Nov 26 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数组函数序列之asort() - 对数组的元素值进行升序排序,保持索引关系
2011/11/02 PHP
PHP 正则表达式小结
2015/02/12 PHP
Yii2创建表单(ActiveForm)方法详解
2016/07/23 PHP
兼容FF和IE的动态table示例自写
2013/10/21 Javascript
JavaScript在IE和FF下的兼容性问题
2014/05/19 Javascript
js实现横向百叶窗效果网页切换动画效果的方法
2015/03/02 Javascript
JavaScript实现数组随机排序的方法
2015/06/26 Javascript
javascript实现在下拉列表中显示多级树形菜单的方法
2015/08/12 Javascript
js判断是否是手机页面
2017/03/17 Javascript
webpack处理 css\less\sass 样式的方法
2017/08/21 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
2017/11/15 Javascript
vue mounted组件的使用
2018/06/18 Javascript
微信小程序的引导页实现代码
2020/06/24 Javascript
Python random模块(获取随机数)常用方法和使用例子
2014/05/13 Python
Python cookbook(数据结构与算法)从序列中移除重复项且保持元素间顺序不变的方法
2018/03/13 Python
基于python log取对数详解
2018/06/08 Python
pygame实现俄罗斯方块游戏
2018/06/26 Python
基于python实现高速视频传输程序
2019/05/05 Python
Python numpy线性代数用法实例解析
2019/11/15 Python
Numpy之将矩阵拉成向量的实例
2019/11/30 Python
Python如何解除一个装饰器
2020/08/07 Python
python与c语言的语法有哪些不一样的
2020/09/13 Python
Html5实现移动端、PC端 刮刮卡效果
2016/06/30 HTML / CSS
DJI美国:消费类无人机领域的领导者
2018/04/27 全球购物
英国Flybe航空官网:欧洲最大的独立支线廉价航空公司
2019/07/15 全球购物
linux面试题参考答案(11)
2012/05/01 面试题
学前教育求职自荐信范文
2013/12/25 职场文书
国际贸易专业个人鉴定
2014/02/22 职场文书
廉洁自律承诺书
2014/03/27 职场文书
妇联领导班子剖析材料
2014/08/21 职场文书
大学生国家助学金感谢信
2015/01/23 职场文书
仓管员岗位职责
2015/02/03 职场文书
萤火虫之墓观后感
2015/06/05 职场文书
张丽莉观后感
2015/06/16 职场文书
生日宴会家属答谢词
2015/09/29 职场文书
关于JavaScript轮播图的实现
2021/11/20 Javascript