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 相关文章推荐
腾讯的ip接口 方便获取当前用户的ip地理位置
Nov 25 Javascript
简单选项卡 js和jquery制作方法分享
Feb 26 Javascript
详解JavaScript基于面向对象之创建对象(2)
Dec 10 Javascript
JS函数定义方式的区别介绍
Mar 22 Javascript
js正则表达式replace替换变量方法
May 21 Javascript
AngularJS 依赖注入详解及示例代码
Aug 17 Javascript
vue-router 学习快速入门
Mar 01 Javascript
layer弹出层全屏及关闭方法
Aug 17 Javascript
Vue 应用中结合vux使用微信 jssdk的方法
Aug 28 Javascript
js正则取值的结果数组调试方法
Oct 10 Javascript
jquery登录的异步验证操作示例
May 09 jQuery
vue 实现在同一界面实现组件的动态添加和删除功能
Jun 16 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
PHP5 安装方法
2006/10/09 PHP
一周学会PHP(视频)Http下载
2006/12/12 PHP
使用 MySQL 开始 PHP 会话
2006/12/21 PHP
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
2010/12/02 PHP
CI框架文件上传类及图像处理类用法分析
2016/05/18 PHP
PHP中的使用curl发送请求(GET请求和POST请求)
2017/02/08 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
Jquery Ajax.ashx 高效分页实现代码
2009/10/20 Javascript
jQuery选择器的工作原理和优化分析
2011/07/25 Javascript
jQuery EasyUI API 中文文档 - Tree树使用介绍
2011/11/19 Javascript
js 对小数加法精度处理示例说明
2013/12/27 Javascript
为jquery的ajaxfileupload增加附加参数的方法
2014/03/04 Javascript
JavaScript设计模式之建造者模式介绍
2014/12/28 Javascript
jquery动态增加删减表格行特效
2015/11/20 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
详解微信小程序 页面跳转 传递参数
2016/12/08 Javascript
JS关于刷新页面的相关总结
2018/05/09 Javascript
Vue2.0中三种常用传值方式(父传子、子传父、非父子组件传值)
2018/08/16 Javascript
vue 刷新之后 嵌套路由不变 重新渲染页面的方法
2018/09/13 Javascript
javascript跳转与返回和刷新页面的实例代码
2019/11/20 Javascript
Python机器学习之决策树算法实例详解
2017/12/06 Python
对python3 一组数值的归一化处理方法详解
2018/07/11 Python
详解python中Numpy的属性与创建矩阵
2018/09/10 Python
Python 操作 ElasticSearch的完整代码
2019/08/04 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
sublime3之内网安装python插件Anaconda的流程
2020/11/10 Python
python文件路径操作方法总结
2020/12/21 Python
HTML5 canvas基本绘图之文字渲染
2016/06/27 HTML / CSS
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
美国男士和女士奢侈品折扣手表购物网站:Certified Watch Store
2018/06/13 全球购物
企业治理工作自我评价
2013/09/26 职场文书
2015年仓库管理员工作总结
2015/04/21 职场文书
涨价通知怎么写
2015/04/23 职场文书
大学入学感言
2015/08/01 职场文书
python+opencv实现视频抽帧示例代码
2021/06/11 Python
MySQL插入数据与查询数据
2022/03/25 MySQL