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 相关文章推荐
鼠标右击事件代码(asp.net后台)
Jan 27 Javascript
JQuery实现倒计时按钮具体方法
Nov 14 Javascript
jquery设置text的值示例(设置文本框 DIV 表单值)
Jan 06 Javascript
JavaScript原型及原型链终极详解
Jan 04 Javascript
简单理解vue中实例属性vm.$els
Dec 01 Javascript
Vue.js搭建移动端购物车界面
Jun 28 Javascript
Vue 组件注册实例详解
Feb 23 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
Jun 03 Javascript
JS面向对象编程基础篇(三) 继承操作实例详解
Mar 03 Javascript
微信小程序文章详情功能完整实例
Jun 03 Javascript
使用 JavaScript 制作页面效果
Apr 21 Javascript
Vue全局事件总线你了解吗
Feb 24 Vue.js
基于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
《Pokemon Sword·Shield》系列WEB动画《薄明之翼》第2话声优阵容公开!
2020/03/06 日漫
「OVERLORD」动画重要删减!雅儿贝德的背叛?至尊猎杀队结成
2020/04/09 日漫
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHP 字符串正则替换函数preg_replace使用说明
2011/07/15 PHP
PHP ignore_user_abort函数详细介绍和使用实例
2014/07/15 PHP
ThinkPHP框架使用redirect实现页面重定向的方法实例分析
2018/04/12 PHP
通过PHP设置BugFree获取邮箱通知
2019/04/25 PHP
jquery导航制件jquery鼠标经过变色效果示例
2013/12/05 Javascript
javascript获取dom的下一个节点方法
2014/09/05 Javascript
javascript实现全角半角检测的方法
2015/07/23 Javascript
微信小程序 wxapp地图 map详解
2016/10/31 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
javaScript动态添加Li元素的实例
2018/02/24 Javascript
vue 之 .sync 修饰符示例详解
2018/04/21 Javascript
Python3中多线程编程的队列运作示例
2015/04/16 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
Python解析json之ValueError: Expecting property name enclosed in double quotes: line 1 column 2(char 1)
2017/07/06 Python
Python正则表达式和元字符详解
2018/11/29 Python
python绘制漏斗图步骤详解
2019/03/04 Python
详解Numpy数组转置的三种方法T、transpose、swapaxes
2019/05/27 Python
基于Python实现签到脚本过程解析
2019/10/25 Python
python GUI库图形界面开发之PyQt5工具栏控件QToolBar的详细使用方法与实例
2020/02/28 Python
如何配置关联Python 解释器 Anaconda的教程(图解)
2020/04/30 Python
Django全局启用登陆验证login_required的方法
2020/06/02 Python
Keras 中Leaky ReLU等高级激活函数的用法
2020/07/05 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
python 发送get请求接口详解
2020/11/17 Python
39美元购买一副眼镜或太阳镜:39DollarGlasses.com
2018/06/17 全球购物
Otticanet美国:最顶尖的世界名牌眼镜, 能得到打折季的价格
2019/03/10 全球购物
给排水专业应届生求职信
2013/10/12 职场文书
工程部主管岗位职责
2013/11/17 职场文书
外联部演讲稿
2014/05/24 职场文书
企业口号大全
2014/06/12 职场文书
中秋手机店促销方案
2014/06/16 职场文书
五五普法心得体会
2014/09/04 职场文书
浅析Python实现DFA算法
2021/06/26 Python