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获取当前月的第一天和最后一天的小例子
Nov 18 Javascript
无限树Jquery插件zTree的常用功能特性总结
Sep 11 Javascript
把Node.js程序加入服务实现随机启动
Jun 25 Javascript
探析浏览器执行JavaScript脚本加载与代码执行顺序
Jan 12 Javascript
Bootstrap Table服务器分页与在线编辑应用总结
Aug 08 Javascript
javascript 的变量、作用域和内存问题
Apr 19 Javascript
Angular排序实例详解
Jun 28 Javascript
JavaScript实现兼容IE6的收起折叠与展开效果实例
Sep 20 Javascript
JavaScript比较同一天的时间大小实例代码
Feb 09 Javascript
webpack4.0打包优化策略整理小结
Mar 30 Javascript
vue初始化动画加载的实例
Sep 01 Javascript
jquery实现下载图片功能
Jul 18 jQuery
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
Zend的MVC机制使用分析(一)
2013/05/02 PHP
php中\r \r\n \t的区别示例介绍
2014/02/08 PHP
php 获取SWF动画截图示例代码
2014/02/10 PHP
PHP实现自动对图片进行滚动显示的方法
2015/03/12 PHP
PHP中的命名空间详细介绍
2015/07/02 PHP
PHP基于rabbitmq操作类的生产者和消费者功能示例
2018/06/16 PHP
Laravel多域名下字段验证的方法
2019/04/04 PHP
定位地理位置PHP判断员工打卡签到经纬度是否在打卡之内
2019/05/23 PHP
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
jquery时间下拉框小例子
2013/04/15 Javascript
javascript类型系统 Window对象学习笔记
2016/01/07 Javascript
Boostrap模态窗口的学习小结
2016/03/28 Javascript
5个最顶级jQuery图表类库插件【jquery插件库】
2016/05/05 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
vue-cli webpack 引入swiper的操作方法
2018/09/15 Javascript
用Fundebug插件记录网络请求异常的方法
2019/02/21 Javascript
python在linux中输出带颜色的文字的方法
2014/06/19 Python
Python实现发送email的几种常用方法
2014/08/18 Python
python pandas 对series和dataframe的重置索引reindex方法
2018/06/07 Python
pandas修改DataFrame列名的实现方法
2019/02/22 Python
python中的逆序遍历实例
2019/12/25 Python
使用OpenCV circle函数图像上画圆的示例代码
2019/12/27 Python
在win64上使用bypy进行百度网盘文件上传功能
2020/01/02 Python
pymysql的简单封装代码实例
2020/01/08 Python
python3实现网页版raspberry pi(树莓派)小车控制
2020/02/12 Python
总结html5自定义属性有哪些
2020/04/01 HTML / CSS
static关键字的用法
2013/10/07 面试题
安全生产检讨书
2014/01/21 职场文书
三查三看党性分析材料
2014/02/18 职场文书
企业党员公开承诺书
2014/03/26 职场文书
幼儿园毕业寄语
2014/04/03 职场文书
投标授权委托书范文
2014/08/02 职场文书
会计人员演讲稿
2014/09/11 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
简单租房协议书(范本)
2014/10/13 职场文书
MySQL系列之十三 MySQL的复制
2021/07/02 MySQL