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 相关文章推荐
dotopAlert 提示用户需安装播放器的代码
Sep 17 Javascript
基于JS实现的倒计时程序实例
Jul 24 Javascript
jQuery日历插件datepicker用法详解
Mar 03 Javascript
javascript函数自动执行常用方法汇总
Mar 28 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
js 作用域和变量详解
Feb 16 Javascript
Vue axios 中提交表单数据(含上传文件)
Jul 06 Javascript
angularjs 缓存的使用详解
Mar 19 Javascript
vue实现按需加载组件及异步组件功能
May 27 Javascript
js图片无缝滚动插件使用详解
May 26 Javascript
layer.msg()去掉默认时间,实现手动关闭的方法
Sep 12 Javascript
解决VUE-Router 同一页面第二次进入不刷新的问题
Jul 22 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
水质对咖图啡风味的影响具体有哪些
2021/03/03 冲泡冲煮
C# Assembly类访问程序集信息
2009/06/13 PHP
php的webservice的wsdl的XML无法显示问题的解决方法
2014/03/11 PHP
使用XHGui来测试PHP性能的教程
2015/07/03 PHP
Thinkphp5+Redis实现商品秒杀代码实例讲解
2020/12/29 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
jQuery JSON的解析方式分享
2011/04/05 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
js实现运动logo图片效果及运动元素对象sportBox使用方法
2012/12/25 Javascript
jqGrid 学习笔记整理——进阶篇(一 )
2016/04/17 Javascript
深入理解JavaScript内置函数
2016/06/03 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
巧用Javascript的逻辑运算符
2016/12/02 Javascript
BootStrap 表单控件之单选按钮水平排列
2017/05/23 Javascript
tangram.js库实现js类的方式实例分析
2018/01/06 Javascript
微信小程序实现选择地址省市区三级联动
2020/06/21 Javascript
解决vue与node模版引擎的渲染标记{{}}(双花括号)冲突问题
2020/09/11 Javascript
Python利用multiprocessing实现最简单的分布式作业调度系统实例
2017/11/14 Python
Python函数参数操作详解
2018/08/03 Python
Python 等分切分数据及规则命名的实例代码
2019/08/16 Python
python自动循环定时开关机(非重启)测试
2019/08/26 Python
python 内置函数汇总详解
2019/09/16 Python
python使用梯度下降算法实现一个多线性回归
2020/03/24 Python
对python中各个response的使用说明
2020/03/28 Python
使用Numpy对特征中的异常值进行替换及条件替换方式
2020/06/08 Python
美国宠物护理专家:Revival Animal Health
2020/01/05 全球购物
俄罗斯GamePark游戏商店网站:购买游戏、游戏机和配件
2020/03/13 全球购物
越南母婴用品购物网站:Kids Plaza
2020/04/09 全球购物
经贸日语毕业生自荐信
2013/11/03 职场文书
事务机电主管工作职责
2014/02/25 职场文书
求职简历自荐信
2014/06/18 职场文书
2014年酒店工作总结范文
2014/11/17 职场文书
2015社区精神文明建设工作总结
2015/04/21 职场文书
实习感想范文
2015/08/10 职场文书
感谢信
2019/04/11 职场文书
mybatis-plus模糊查询指定字段
2022/04/28 Java/Android