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 学习初步 入门教程
Mar 25 Javascript
jquery select 设置默认选中的示例代码
Feb 07 Javascript
jQuery遍历对象、数组、集合实例
Nov 08 Javascript
jQuery中remove()方法用法实例
Dec 25 Javascript
javascript浏览器窗口之间传递数据的方法
Jan 20 Javascript
使用JQuery实现的分页插件分享
Nov 05 Javascript
JavaScript仿百度图片浏览效果
Nov 23 Javascript
JQuery实现图片轮播效果
May 08 jQuery
基于ajax和jsonp的原生封装(实例)
Oct 16 Javascript
基于vue.js 2.x的虚拟滚动条的示例代码
Jan 23 Javascript
vue中的模态对话框组件实现过程
May 01 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 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实现提取一个图像文件并在浏览器上显示的代码
2012/10/06 PHP
php如何连接sql server
2015/10/16 PHP
php实现异步数据调用的方法
2015/12/24 PHP
ThinkPHP连接Oracle数据库
2016/04/22 PHP
php 数组字符串搜索array_search技巧
2016/07/05 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
yii2 在控制器中验证请求参数的使用方法
2019/06/19 PHP
自己的js工具 Event封装
2009/08/21 Javascript
javascript下4个跨浏览器必备的函数
2010/03/07 Javascript
js克隆对象、数组的常用方法介绍
2013/09/26 Javascript
使用js画图之圆、弧、扇形
2015/01/12 Javascript
JS实现部分HTML固定页面顶部随屏滚动效果
2015/12/24 Javascript
jQuery遍历DOM的父级元素、子级元素和同级元素的方法总结
2016/07/07 Javascript
JS弹出新窗口被拦截的解决方法
2016/08/09 Javascript
给easyui的datebox控件添加清空按钮的实现方法
2016/11/09 Javascript
js实现消息滚动效果
2017/01/18 Javascript
JS倒计时实例_天时分秒
2017/08/22 Javascript
JS实现点击拉拽轮播图pc端移动端适配
2018/09/05 Javascript
Vue.js 十五分钟入门图文教程
2018/09/12 Javascript
vue2中引用及使用 better-scroll的方法详解
2018/11/15 Javascript
学习LayUI时自研的表单参数校验框架案例分析
2019/07/29 Javascript
python中的随机函数random的用法示例
2018/01/27 Python
对tf.reduce_sum tensorflow维度上的操作详解
2018/07/26 Python
PyCharm代码提示忽略大小写设置方法
2018/10/28 Python
Django 中自定义 Admin 样式与功能的实现方法
2019/07/04 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Python判断远程服务器上Excel文件是否被人打开的方法
2020/07/13 Python
python判断all函数输出结果是否为true的方法
2020/12/03 Python
自荐信模版
2013/10/24 职场文书
自荐信结尾
2013/10/27 职场文书
如何客观的进行自我评价
2013/12/17 职场文书
大学班级干部的自我评价分享
2014/02/10 职场文书
《泉水》教学反思
2014/04/11 职场文书
青春无悔演讲稿
2014/05/08 职场文书
校友会致辞
2015/07/30 职场文书
升职感谢领导的话语及升职感谢信
2019/06/24 职场文书