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 贪吃蛇实现代码
Nov 22 Javascript
setInterval计时器不准的问题解决方法
May 08 Javascript
10分钟学会写Jquery插件实例教程
Sep 06 Javascript
jquery实现鼠标滑过小图时显示大图的方法
Jan 14 Javascript
JavaScript获取页面上被选中文字的方法技巧
Mar 13 Javascript
js实现多图左右切换功能
Aug 04 Javascript
AngularJS路由Ui-router模块用法示例
May 29 Javascript
JavaScript正则表达式和级联效果
Sep 14 Javascript
js注册时输入合法性验证方法
Oct 21 Javascript
JavaScript引用类型Function实例详解
Aug 09 Javascript
ant-design-vue按需加载的坑的解决
May 14 Javascript
vue引入静态js文件的方法
Jun 20 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
ZF等常用php框架中存在的问题
2008/01/10 PHP
用PHP的ob_start() 控制您的浏览器cache
2009/08/03 PHP
php smarty 二级分类代码和模版循环例子
2011/06/16 PHP
php错误级别的设置方法
2013/06/17 PHP
Yii扩展组件编写方法实例分析
2015/06/29 PHP
php根据用户语言跳转相应网页
2015/11/04 PHP
基于jquery的loading效果实现代码
2010/11/05 Javascript
Javascript中获取对象的原型对象的方法小结
2015/02/25 Javascript
JavaScript判断是否为数组的3种方法及效率比较
2015/04/01 Javascript
javascript cookie的简单应用
2016/02/24 Javascript
Nodejs中 npm常用命令详解
2016/07/04 NodeJs
WebPack配置vue多页面的技巧
2018/05/15 Javascript
jsonp实现百度下拉框功能的方法分析
2019/05/10 Javascript
vant自定义二级菜单操作
2020/11/02 Javascript
一分钟学会JavaScript中的try-catch
2020/12/14 Javascript
Python简单操作sqlite3的方法示例
2017/03/22 Python
Python字符串处理实例详解
2017/05/18 Python
matplotlib.pyplot绘图显示控制方法
2019/01/15 Python
通过 Python 和 OpenCV 实现目标数量监控
2020/01/05 Python
python中resample函数实现重采样和降采样代码
2020/02/25 Python
Django 404、500页面全局配置知识点详解
2020/03/10 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python判断字符串是否为空和null方法实例
2020/04/26 Python
JAVA SWT事件四种写法实例解析
2020/06/05 Python
Python中logging日志记录到文件及自动分割的操作代码
2020/08/05 Python
迪卡侬荷兰官网:Decathlon荷兰
2017/10/29 全球购物
博士研究生自我鉴定范文
2013/12/04 职场文书
摄影专业毕业生求职信
2014/08/05 职场文书
学习党章的体会
2014/11/07 职场文书
同事打架检讨书
2015/05/06 职场文书
2016年教师师德师风心得体会
2016/01/12 职场文书
护士工作心得体会
2016/01/25 职场文书
《酸的和甜的》教学反思
2016/02/18 职场文书
小程序教您怎样你零成本推广获取数万用户的方法
2019/07/30 职场文书
关于React Native 无法链接模拟器的问题
2021/06/21 Javascript
Python移位密码、仿射变换解密实例代码
2021/06/27 Python