Vue实现本地购物车功能


Posted in Javascript onDecember 05, 2018

本文实例为大家分享了Vue实现本地购物车功能的具体代码,供大家参考,具体内容如下

功能分析 : v-for显示商品名字,价格,数量和对商品进行操作,全选的功能
结构仍然分成 : index.html , index.js , style.css

index.html

<!DOCTYPE html>
<html lang="en">
<head>
 <meta charset="UTF-8">
 <title>购物车实例</title>
 <link rel="stylesheet" href="style.css" >
</head>
<body>
 <div id="app" v-cloak>
 <template v-if="list.length">
 <table>
 <thead>
 <tr>
 <th><input type="checkbox" @click='checkAll' :checked='allCheck'></th>
 <th>序号</th>
 <th>商品名称</th>
 <th>商品单价</th> 
 <th>购买数量</th> 
 <th>操作</th> 
 </tr>
 </thead>
 <tbody>
 <tr v-for="(item,index) in list">
 <td><input type="checkbox" :checked='item.isChecked' @click="singleCheck(index)"></td>
 <td>{{index + 1}}</td>
 <td>{{item.name}}</td>
 <td>{{item.price}}</td>
 <td>
 <button @click="handleReduce(index)" :disable="item.count === 1 ">-</button>
 {{item.count}}
 <button @click="handleAdd(index)">+</button>
 </td>
 <td>
 <button @click="handleRemove">移除</button>
 </td>
 </tr>
 </tbody>
 </table>
 <div>总价 : ¥{{totalPrice}}</div>
 </template>
 <div v-else>购物车为空</div>

 </div>
</body>
<!-- 通过cdn引入-->
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
<script src="index.js"></script>
</html>

index.js

const app = new Vue({
 el : '#app',
 data : {
 allCheck:false,
 list : [
 {
 id: 1 ,
 name :'iPhone 8 ',
 price: 6188 ,
 count: 1 ,
 isChecked : false
 },
 {
 id: 2 ,
 name :'小米 8 ',
 price: 5888 ,
 count: 1 ,
 isChecked : false
 },
 {
 id: 3 ,
 name :'iPad Pro ',
 price: 11000 ,
 count: 1 ,
 isChecked : false
 },
 {
 id: 4 ,
 name :'雷神SE9',
 price: 6188 ,
 count: 10 ,
 isChecked : false
 },
 ]
 },
 computed : {
 //通过计算属性获取总价格
 totalPrice:function() {
 let total = 0;
 const newArr = this.list.filter(value => {
 return value.isChecked == true
 })
 for(var i = 0 ;i<newArr.length;i++) {
 total += this.list[i].price * this.list[i].count
 }
 //返回一个符合千分位格式的金额数
 //return total.toString().replace(/\B(?=(\d{3})+$)/g,',')
 return total
 }
 },
 methods : {
 //减法
 handleReduce:function(index) {
 if(this.list[index].count === 1) return ;
 this.list[index].count--;
 },
 //加法
 handleAdd:function(index) {
 this.list[index].count++
 },
 //移除
 handleRemove:function(index) {
 this.list.splice(index,1)
 },
 //全选
 checkAll() {
 this.allCheck = !this.allCheck
 this.list.forEach(value => {
 value.isChecked = this.allCheck
 })
 },
 //单选,当全部选中时,改变全选按钮的状态
 singleCheck(index) {
 this.list[index].isChecked = !this.list[index].isChecked
 const selectData = this.list.filter(value => {
 return value.isChecked == true
 })
 this.allCheck = selectData.length === this.list.length ? true : false
 }
 }
})

style.css

[v-cloak] {
 display: none;
}
table {
 border: 1px solid #e9e9e9;
 border-collapse: collapse;
 border-spacing: 0;
 empty-cells: show;
}
th,td {
 padding: 8px 16px;
 border: 1px solid #e9e9e9;
 text-align: left;
}
th {
 background: yellowgreen;
 color: #5c6b77;
 font-weight: 600;
 white-space: nowrap;
}

效果图如下

Vue实现本地购物车功能

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

Javascript 相关文章推荐
JavaScript URL参数读取改进版
Jan 16 Javascript
JavaScript 设计模式之组合模式解析
Apr 09 Javascript
node.js实现多图片上传实例
Jun 03 Javascript
jQuery源码解读之removeClass()方法分析
Feb 20 Javascript
Js数组排序函数sort()介绍
Jun 08 Javascript
jQuery实现动态添加tr到table的方法
Dec 26 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
Parcel.js + Vue 2.x 极速零配置打包体验教程
Dec 24 Javascript
AngularJS动态添加数据并删除的实例
Feb 27 Javascript
element-ui表格列金额显示两位小数的方法
Aug 24 Javascript
9种方法优化jQuery代码详解
Feb 04 jQuery
详解webpack-dev-middleware 源码解读
Mar 23 Javascript
node和vue实现商城用户地址模块
Dec 05 #Javascript
解决node-sass偶尔安装失败的方法小结
Dec 05 #Javascript
用WebStorm进行Angularjs 2开发(环境篇:Windows 10,Angular-cli方式)
Dec 05 #Javascript
详解angularjs4部署文件过大解决过程
Dec 05 #Javascript
jQuery的ztree仿windows文件新建和拖拽功能的实现代码
Dec 05 #jQuery
关于RxJS Subject的学习笔记
Dec 05 #Javascript
node实现生成带参数的小程序二维码并保存到本地功能示例
Dec 05 #Javascript
You might like
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
理解PHP5中static和const关键字的区别
2007/03/19 PHP
PHP5 的对象赋值机制介绍
2011/08/02 PHP
PHP中register_shutdown_function函数的基础介绍与用法详解
2017/11/28 PHP
js异或加解密效果代码
2008/06/25 Javascript
javascript 学习笔记(六)浏览器类型及版本信息检测代码
2011/04/08 Javascript
jquery多选项卡效果实例代码(附效果图)
2013/03/23 Javascript
处理文本部分内容的TextRange对象应用实例
2014/07/29 Javascript
浅谈Javascript变量作用域问题
2014/12/16 Javascript
js跨域请求数据的3种常用的方法
2015/12/01 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
React-router4路由监听的实现
2018/08/07 Javascript
vue-i18n结合Element-ui的配置方法
2019/05/20 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
Python Mysql自动备份脚本
2008/07/14 Python
Python中optparse模块使用浅析
2015/01/01 Python
Python SqlAlchemy动态添加数据表字段实例解析
2018/02/07 Python
详解python里的命名规范
2018/07/16 Python
Python实现正则表达式匹配任意的邮箱方法
2018/12/20 Python
Python设计模式之命令模式原理与用法实例分析
2019/01/11 Python
Python selenium实现断言3种方法解析
2020/09/08 Python
意大利奢华内衣制造商:Cosabella
2017/08/29 全球购物
美国女士时尚珠宝及配饰购物网站:Icing
2018/07/02 全球购物
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
新加坡第一的杂货零售商:NTUC FairPrice
2020/12/05 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
安全检查与奖惩制度
2014/01/23 职场文书
信息与计算科学专业推荐信
2014/02/23 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
2014年三万活动总结
2014/04/26 职场文书
生产车间主任岗位职责
2015/04/08 职场文书
周一问候语大全
2015/11/10 职场文书
创业计划书之养殖业
2019/10/11 职场文书
利用python做表格数据处理
2021/04/13 Python
pytorch 实现变分自动编码器的操作
2021/05/24 Python
Python 如何解决稀疏矩阵运算
2021/05/26 Python