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 For Beginners(转载)
Jan 05 Javascript
javascript 判断字符串是否包含某字符串及indexOf使用示例
Oct 18 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
浅谈js中的闭包
Mar 16 Javascript
js简单实现点击左右运动的方法
Apr 10 Javascript
javascript数组去重小结
Mar 07 Javascript
Canvas + JavaScript 制作图片粒子效果
Feb 08 Javascript
微信小程序 开发之顶部导航栏实例代码
Feb 23 Javascript
Vue2.0 多 Tab切换组件的封装实例
Jul 28 Javascript
layui添加动态菜单与选项卡
Jul 26 Javascript
Angular+ionic实现折叠展开效果的示例代码
Jul 29 Javascript
jQuery实现推拉门效果
Oct 19 jQuery
基于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中定义网站根目录的常用方法
2010/08/08 PHP
php实现信用卡校验位算法THE LUHN MOD-10示例
2014/05/07 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP实现过滤掉非汉字字符只保留中文字符
2015/06/04 PHP
php实现统计目录文件大小的函数
2015/12/25 PHP
详解WordPress开发中get_header()获取头部函数的用法
2016/01/08 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
对象特征检测法判断浏览器对javascript对象的支持
2009/07/25 Javascript
jQuery 三击事件实现代码
2013/09/11 Javascript
js查找某元素中的所有图片地址的方法
2014/01/16 Javascript
jquery常用操作小结
2014/07/21 Javascript
详解JavaScript的while循环的使用
2015/06/03 Javascript
jQuery循环遍历子节点并获取值的方法
2016/04/14 Javascript
jQuery插件扩展实例【添加回调函数】
2016/11/26 Javascript
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
JS中type=&quot;button&quot;和type=&quot;submit&quot;的区别
2017/07/04 Javascript
微信小程序dom操作的替代思路实例分析
2018/12/06 Javascript
nuxt踩坑之Vuex状态树的模块方式使用详解
2019/09/06 Javascript
JS面向对象编程——ES6 中class的继承用法详解
2020/03/03 Javascript
python实现简单的计时器功能函数
2015/03/14 Python
Python中str.format()详解
2017/03/12 Python
浅谈Django中的数据库模型类-models.py(一对一的关系)
2018/05/30 Python
利用Python实现手机短信监控通知的方法
2019/07/22 Python
Django生成PDF文档显示网页上以及PDF中文显示乱码的解决方法
2019/12/17 Python
python脚本后台执行方式
2019/12/21 Python
Tensorflow中tf.ConfigProto()的用法详解
2020/02/06 Python
PyInstaller运行原理及常用操作详解
2020/06/13 Python
python3中编码获取网页的实例方法
2020/11/16 Python
使用python爬取抖音app视频的实例代码
2020/12/01 Python
科颜氏加拿大官方网站: Kiehl’s加拿大
2016/08/16 全球购物
哈利波特商店:Harry Potter Shop
2018/11/30 全球购物
编码实现字符串转整型的函数
2012/06/02 面试题
P/Invoke是什么
2015/07/31 面试题
物流管理专业大学生自荐信
2013/10/04 职场文书
党的群众路线教育实践活动制度建设计划方案
2014/10/31 职场文书
MySQL 外连接语法之 OUTER JOIN
2022/04/09 MySQL