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非法字符过滤代码(骂人的话等等)
May 26 Javascript
jQuery 阴影插件代码分享
Jan 09 Javascript
js解析与序列化json数据(二)序列化探讨
Feb 01 Javascript
JavaScript中的eval()函数详解
Aug 22 Javascript
JavaScript String 对象常用方法总结
Apr 28 Javascript
javascript之Boolean类型对象
Jun 07 Javascript
Javascript中字符串replace方法的第二个参数探究
Dec 05 Javascript
Bootstrap轮播图学习使用
Feb 10 Javascript
jQuery插件HighCharts实现的2D堆条状图效果示例【附demo源码下载】
Mar 14 Javascript
vue2.0 axios前后端数据处理实例代码
Jun 30 Javascript
layer插件select选中默认值的方法
Aug 14 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 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
SONY ICF-SW7600的电路分析
2021/03/02 无线电
php5.5新数组函数array_column使用
2013/07/08 PHP
PHP程序员基本要求和必备技能
2014/05/09 PHP
php 魔术方法详解
2014/11/11 PHP
PHP连接MYSQL数据库实例代码
2016/01/20 PHP
基于json的jquery地区联动效果代码
2011/07/06 Javascript
js获取单选框或复选框值及操作
2012/12/18 Javascript
javascript中的原型链深入理解
2014/02/24 Javascript
一种新的javascript对象创建方式Object.create()
2015/12/28 Javascript
JavaScript实现图片自动加载的瀑布流效果
2016/04/11 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
动态加载js、css的简单实现代码
2016/05/26 Javascript
javascript基础语法——全面理解变量和标识符
2016/06/02 Javascript
javascript表单正则应用
2017/02/04 Javascript
如何手动实现es5中的bind方法详解
2018/12/07 Javascript
el-select数据过多懒加载的解决(loadmore)
2019/05/29 Javascript
解决layui数据表格table的横向滚动条显示问题
2019/09/04 Javascript
vue.js实现二级菜单效果
2019/10/19 Javascript
js实现点击按钮随机生成背景颜色
2020/09/05 Javascript
python删除文件示例分享
2014/01/28 Python
Scrapy的简单使用教程
2017/10/24 Python
python thrift搭建服务端和客户端测试程序
2018/01/17 Python
Python2.7.10以上pip更新及其他包的安装教程
2018/06/12 Python
Python OpenCV处理图像之图像直方图和反向投影
2018/07/10 Python
Python实现登陆文件验证方法
2018/10/06 Python
python matplotlib如何给图中的点加标签
2019/11/14 Python
pytorch-神经网络拟合曲线实例
2020/01/15 Python
keras小技巧——获取某一个网络层的输出方式
2020/05/23 Python
Django实现后台上传并显示图片功能
2020/05/29 Python
python3.5的包存放的具体路径
2020/08/16 Python
行政管理专业求职信
2014/07/06 职场文书
人事行政专员岗位职责
2014/07/23 职场文书
会计工作岗位职责
2015/02/03 职场文书
2015年党员创先争优公开承诺书
2015/04/27 职场文书
院系推荐意见
2015/06/05 职场文书
mybatis调用sqlserver存储过程返回结果集的方法
2021/05/08 SQL Server