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 学习笔记 防止发生命名冲突
Jul 30 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
JavaScript字符串对象charAt方法入门实例(用于取得指定位置的字符)
Oct 17 Javascript
JS动态修改iframe高度和宽度的方法
Apr 01 Javascript
javascript密码强度校验代码(两种方法)
Aug 10 Javascript
jQuery实现仿微软首页感应鼠标变化滑动窗口效果
Oct 08 Javascript
AngularJS中的按需加载ocLazyLoad示例
Jan 11 Javascript
JavaScript中transform实现数字翻页效果
Mar 08 Javascript
webpack写jquery插件的环境配置
Dec 21 jQuery
基于vue cli重构多页面脚手架过程详解
Jan 23 Javascript
elementUI select组件value值注意事项详解
May 29 Javascript
p5.js实现故宫橘猫赏秋图动画
Oct 23 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 DOMElement 操作xml 文档的实现代码
2013/05/10 PHP
php 5.6版本中编写一个PHP扩展的简单示例
2015/01/20 PHP
javascript之对系统的toFixed()方法的修正
2007/05/08 Javascript
JavaScript 无符号右移赋值操作
2009/04/17 Javascript
EXTJS内使用ACTIVEX控件引起崩溃问题的解决方法
2010/03/31 Javascript
JavaScript对象学习经验整理
2013/10/12 Javascript
JavaScript link方法入门实例(给字符串加上超链接)
2014/10/17 Javascript
基于javascript实现的搜索时自动提示功能
2014/12/26 Javascript
深入理解JavaScript系列(25):设计模式之单例模式详解
2015/03/03 Javascript
jQuery插件slides实现无缝轮播图特效
2015/04/17 Javascript
学习javascript的闭包,原型,和匿名函数之旅
2015/10/18 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
jQuery Tree Multiselect使用详解
2017/05/02 jQuery
使用 Node.js 对文本内容分词和关键词抽取
2017/05/27 Javascript
详解vue项目构建与实战
2017/06/27 Javascript
详解VueJS应用中管理用户权限
2018/02/02 Javascript
实现jquery放大镜的两种方法
2018/02/22 jQuery
在vue使用clipboard.js进行一键复制文本的实现示例
2019/01/15 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
webpack4之如何编写loader的方法步骤
2019/06/06 Javascript
python实现在线翻译功能
2020/03/03 Python
OpenCV4.1.0+VS2017环境配置的方法步骤
2020/07/09 Python
使用 css3 实现圆形进度条的示例
2017/07/05 HTML / CSS
巴西24小时在线药房:Droga Raia
2020/05/12 全球购物
怎样有效的进行自我评价
2013/10/06 职场文书
经销商会议欢迎词
2014/01/11 职场文书
十佳班主任事迹材料
2014/01/18 职场文书
马智宇婚礼主持词
2014/03/22 职场文书
村干部培训方案
2014/05/02 职场文书
竞争上岗演讲稿范文
2014/05/12 职场文书
2014年人力资源工作总结
2014/11/19 职场文书
2014年幼师工作总结
2014/11/22 职场文书
2016年小学教师政治学习心得体会
2016/01/23 职场文书
导游词之杭州西湖
2019/09/19 职场文书
导游词之嵊泗列岛
2019/10/30 职场文书
Apache Calcite 实现方言转换的代码
2021/04/24 Servers