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 相关文章推荐
js constructor的实际作用分析
Nov 15 Javascript
基于Jquery+Ajax+Json实现分页显示附效果图
Jul 30 Javascript
更快的异步执行(setTimeout多浏览器)
Aug 12 Javascript
元素绑定click点击事件方法
Jun 08 Javascript
简述AngularJS相关的一些编程思想
Jun 23 Javascript
jQuery实现动态表单验证时文本框抖动效果完整实例
Aug 21 Javascript
js实现仿百度风云榜可重复多次调用的TAB切换选项卡效果
Aug 31 Javascript
Bootstrap+jfinal退出系统弹出确认框的实现方法
May 30 Javascript
百度地图API之百度地图退拽标记点获取经纬度的实现代码
Jan 12 Javascript
checkbox:click事件触发span元素内容改变的方法
Sep 11 Javascript
详解微信小程序input标签正则初体验
Aug 18 Javascript
监听element-ui table滚动事件的方法
Mar 26 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
php递归删除目录下的文件但保留的实例分享
2014/05/10 PHP
round robin权重轮循算法php实现代码
2016/05/28 PHP
详解PHP防止盗链防止迅雷下载的方法
2017/04/26 PHP
php实现的三个常用加密解密功能函数示例
2017/11/06 PHP
PHP支付宝当面付2.0代码
2018/12/21 PHP
JavaScript中void(0)的具体含义解释
2007/02/27 Javascript
用showModalDialog弹出页面后,提交表单总是弹出一个新窗口
2009/07/18 Javascript
基于Jquery的简单图片切换效果
2011/01/06 Javascript
使用滤镜设置透明导致 IE 6/7/8/9 解析异常的解决方法
2011/04/07 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
js实现的常用的左侧导航效果
2013/10/17 Javascript
Jquery下EasyUI组件中的DataGrid结果集清空方法
2014/01/06 Javascript
js实现简单的联动菜单效果
2015/08/19 Javascript
多功能jQuery树插件zTree实现权限列表简单实例
2016/07/12 Javascript
学习掌握JavaScript中this的使用技巧
2016/08/29 Javascript
微信小程序 自定义对话框实例详解
2017/01/20 Javascript
webpack配置的最佳实践分享
2017/04/21 Javascript
vue.js+Echarts开发图表放大缩小功能实例
2017/06/09 Javascript
vue中使用input[type=&quot;file&quot;]实现文件上传功能
2018/09/10 Javascript
通过layer实现可输入的模态框的例子
2019/09/27 Javascript
python检测服务器是否正常
2014/02/16 Python
Python中摘要算法MD5,SHA1简介及应用实例代码
2018/01/09 Python
Tensorflow读取并输出已保存模型的权重数值方式
2020/01/04 Python
Python unittest工作原理和使用过程解析
2020/02/24 Python
Python Flask上下文管理机制实例解析
2020/03/16 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
Gtech官方网站:地毯清洁器、吸尘器及园艺设备
2018/05/23 全球购物
大都会艺术博物馆商店:The Met Store
2018/06/22 全球购物
Janie and Jack美国官网:GAP旗下的高档童装品牌
2019/09/09 全球购物
大学本科毕业生的自我鉴定
2013/11/26 职场文书
会计自荐信范文
2014/03/09 职场文书
演讲稿祖国在我心中
2014/05/04 职场文书
六五普法宣传标语
2014/10/06 职场文书
党员干部三严三实心得体会
2014/10/13 职场文书
Python实现简繁体转换
2021/06/07 Python
基于Python实现对比Exce的工具
2022/04/07 Python