vue实现购物车加减


Posted in Javascript onMay 30, 2020

本文实例为大家分享了vue实现购物车加减的具体代码,供大家参考,具体内容如下

通常我们会在模板中绑定表达式,模板是用来描述视图结构的。如果模板中的表达式存在过多的逻辑,模板会变得臃肿不堪,维护变得非常困难。因此,为了简化逻辑,当某个属性的值依赖于其他属性的值时,我们可以使用计算属性。

那么什么是计算属性呢?

计算属性就是当其依赖属性的值发生变化是,这个属性的值会自动更新,与之相关的DOM部份也会同步自动更新。
实现的效果图如下:

vue实现购物车加减

我是使用了bootstrap跟Vue去完成这个效果的。

首先导入包:

<link rel="stylesheet" href="css/bootstrap.css" />
<script type="text/javascript" src="js/vue.js" ></script>

接着是布局样式:

<div id="app">
 <div class="container">
 <table class="table table-bordered table-hover"> 
 <tr>
 <td>
  <input type="checkbox" v-model="checkAll" @click="selectAll" />
 </td>
 <td>
 商品名称
 </td>
 <td>
 商品价格
 </td>
 <td>
 商品数量
 </td>
 <td>
 商品总额
 </td>
 <td>
 操作
 </td>
 </tr>
  <tr v-for="(item,index) in listInfo">
  <td>
  <input type="checkbox" :value="item.id" v-model="checkItem" @change="selectOne" />
  </td>
 <td>{{item.shopName}}</td>
 <td>{{item.shopPrice}}</td>
 <td>
 <button class="btn btn-default" @click="reduce(index)">-</button>
 <input type="text" v-model="item.shopCount" />
 <button class="btn btn-default" @click="add(index)">+</button>
 </td>
 <td>
 {{item.shopPrice*item.shopCount}}
 </td>
 <td>
 <button class="btn btn-warning" @click="del(index)">删除</button>
 </td>
 </tr> 
 </table>
 <p class="text-right">
 金额总计:{{sum}}
 </p>
 <p class="text-right">
 商品数量:{{count}}
 </p>
 <hr />
 <form>
 <div class="form-group">
 <input class="form-control" placeholder="商品名称" v-model="shopName" />
 </div>
 <div class="form-group">
 <input class="form-control" placeholder="商品价格" v-model = "shopPrice"/>
 </div>
 <div class="form-group">
 <button class="btn btn-primary" type="button" @click="addInfo">增加</button>
 </div>
 </form>
 </div>
</div>

最后是方法:

<script>
 new Vue({
 el:"#app",
 data:{
 listInfo:[
 {id:1,shopName:"男装1",shopPrice:1000,shopCount:0},
 {id:2,shopName:"男装2",shopPrice:2000,shopCount:0},
 {id:3,shopName:"男装3",shopPrice:3000,shopCount:0},
 {id:4,shopName:"男装4",shopPrice:4000,shopCount:0},
 {id:5,shopName:"男装5",shopPrice:5000,shopCount:0},
 ],
 shopName:"",
 shopPrice:"",
 checkItem:[],
 checkAll:false
 },
 methods:{
 add:function(index){
 this.listInfo[index].shopCount++
 
 },
 reduce:function(index){
 if(this.listInfo[index].shopCount<=0){
 this.listInfo[index].shopCount = 0
 }else {
 this.listInfo[index].shopCount--
 }
 
 },
 del:function(index){
  this.listInfo.splice(index,1)
 },
 addInfo:function(){
// alert(1)
 
 var obj = {
 id:this.listInfo.length+1,
 shopName:this.shopName,
 shopPrice:this.shopPrice,
 shopCount:0
 }
 console.log(obj)
 this.listInfo.push(obj) 
 },
 
 selectAll:function(){
 this.checkItem = []
 if(!this.checkAll){
 for (var i=0;i<this.listInfo.length;i++) {
 this.checkItem.push(this.listInfo[i].id)
 }
 }else {
 this.checkItem = []
 this.checkAll = false
 }
 },
 selectOne(){
 console.log(this.checkItem)
 if(this.checkItem.length == this.listInfo.length){
 this.checkAll = true
 }else {
 this.checkAll = false
 }
 }
 },
 computed:{
 sum(){
 var total = 0
 for (var i=0;i<this.listInfo.length;i++) {
 total+=parseFloat(this.listInfo[i].shopPrice)*parseFloat(this.listInfo[i].shopCount)
 }
 return total 
 },
 count:function(){
 var total = 0
 for (var i=0;i<this.listInfo.length;i++) {
 total+=parseInt(this.listInfo[i].shopCount)
 }
 return total
 }
 }
 })
</script>

通过以上的代码即可实现简单的购物车加减与增加删除!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
用js实现的页面关键字密度查询代码
Dec 27 Javascript
学习ExtJS Panel常用方法
Oct 07 Javascript
被jQuery折腾得半死,揭秘为何jQuery为何在IE/Firefox下均无法使用
Jan 22 Javascript
javascript 窗口加载蒙板 内嵌网页内容
Nov 19 Javascript
基于jQuery的前端数据通用验证库
Aug 08 Javascript
js取得url地址参数实例
Feb 22 Javascript
Extjs实现进度条的两种便捷方式
Sep 26 Javascript
jQuery animate和CSS3相结合实现缓动追逐效果附源码下载
Apr 18 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
详解如何理解vue的key属性
Apr 14 Javascript
微信小程序全局变量改变监听的实现方法
Jul 15 Javascript
Vue+Element-UI实现上传图片并压缩
Nov 26 Javascript
基于vue和bootstrap实现简单留言板功能
May 30 #Javascript
JS常见内存泄漏及解决方案解析
May 30 #Javascript
react结合bootstrap实现评论功能
May 30 #Javascript
基于JavaScript或jQuery实现网站夜间/高亮模式
May 30 #jQuery
JavaScript类的继承多种实现方法
May 30 #Javascript
Vue实现购物车实例代码两则
May 30 #Javascript
vue实现购物车案例
May 30 #Javascript
You might like
S900/ ETON E1-XM 收音机
2021/03/02 无线电
在线竞拍系统的PHP实现框架(一)
2006/10/09 PHP
PHP用户指南-cookies部分
2006/10/09 PHP
PHP得到某段时间区间的时间戳 php定时任务
2012/04/12 PHP
PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法
2012/12/07 PHP
PHP中几个可以提高运行效率的代码写法、技巧分享
2014/08/21 PHP
php多重接口的实现方法
2015/06/20 PHP
php判断目录存在的简单方法
2019/09/26 PHP
Mozilla中显示textarea中选择的文字
2006/09/07 Javascript
web 页面分页打印的实现
2009/06/22 Javascript
jquery获取特定name所有选中的checkbox,支持IE9标准模式
2013/03/18 Javascript
javascript客户端遍历控件与获取父容器对象示例代码
2014/01/06 Javascript
indexOf 和 lastIndexOf 使用示例介绍
2014/09/02 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
JS原型与原型链的深入理解
2017/02/15 Javascript
React Native第三方平台分享的实例(Android,IOS双平台)
2017/08/04 Javascript
ECMAscript 变量作用域总结概括
2017/08/18 Javascript
node下使用UglifyJS压缩合并JS文件的方法
2018/03/07 Javascript
ng-repeat指令在迭代对象时的去重方法
2018/10/02 Javascript
vue移动端屏幕适配详解
2019/04/30 Javascript
es6 super关键字的理解与应用实例分析
2020/02/15 Javascript
如何实现echarts markline标签名显示自己想要的
2020/07/20 Javascript
微信小程序中target和currentTarget的区别小结
2020/11/06 Javascript
R vs. Python 数据分析中谁与争锋?
2017/10/18 Python
Python实现微信自动好友验证,自动回复,发送群聊链接方法
2019/02/21 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
matplotlib基础绘图命令之imshow的使用
2020/08/13 Python
Python 创建守护进程的示例
2020/09/29 Python
如何完美的建立一个python项目
2020/10/09 Python
物理专业大学生职业生涯规划书
2014/02/07 职场文书
加入学生会演讲稿
2014/04/24 职场文书
2014年安全生产大检查方案
2014/05/13 职场文书
道德演讲稿
2014/05/21 职场文书
2015年办公室个人工作总结
2015/04/20 职场文书
企业反腐倡廉心得体会
2015/08/15 职场文书
实战Python爬虫爬取酷我音乐
2022/04/11 Python