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 相关文章推荐
获取元素距离浏览器周边的位置的方法getBoundingClientRect
Apr 17 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
Mar 28 Javascript
JQuery插件iScroll实现下拉刷新,滚动翻页特效
Jun 22 Javascript
JavaScript中将数组进行合并的基本方法讲解
Mar 07 Javascript
基于Bootstrap里面的Button dropdown打造自定义select
May 30 Javascript
js控制台输出的方法(详解)
Nov 26 Javascript
原生js实现焦点轮播图效果
Jan 12 Javascript
angularjs select 赋值 ng-options配置方法
Feb 28 Javascript
在vue中使用SockJS实现webSocket通信的过程
Aug 29 Javascript
Vue2.0使用嵌套路由实现页面内容切换/公用一级菜单控制页面内容切换(推荐)
May 08 Javascript
前端开发之便利店收银系统代码
Dec 27 Javascript
js前端面试常见浏览器缓存强缓存及协商缓存实例
Jun 21 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 生成饼图 三维饼图
2009/09/28 PHP
Thinkphp中的volist标签用法简介
2014/06/18 PHP
php简单随机字符串生成方法示例
2017/04/19 PHP
IE中jscript/javascript的条件编译
2006/09/07 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
对js关键字命名的疑问介绍
2014/04/25 Javascript
Jquery 返回json数据在IE浏览器中提示下载的问题
2014/05/18 Javascript
JavaScript中Date.toSource()方法的使用教程
2015/06/12 Javascript
JavaScript Split()方法
2015/12/18 Javascript
Bootstrap源码解读排版(1)
2016/12/23 Javascript
详解vue指令与$nextTick 操作DOM的不同之处
2018/08/02 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
2019/11/04 Javascript
在pycharm中开发vue的方法步骤
2020/03/04 Javascript
如何检测JavaScript中的死循环示例详解
2020/08/30 Javascript
JavaScript Blob对象原理及用法详解
2020/10/14 Javascript
Python中字典(dict)和列表(list)的排序方法实例
2014/06/16 Python
Python使用sorted排序的方法小结
2017/07/28 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python selenium环境搭建实现过程解析
2020/09/08 Python
Volcom法国官网:美国冲浪滑板品牌
2017/05/25 全球购物
汽车专业毕业生自荐信
2013/11/03 职场文书
食品营养与检测应届生求职信
2013/11/08 职场文书
物业管理毕业生个人的求职信
2013/11/30 职场文书
国贸专业个人求职信分享
2013/12/04 职场文书
班级入场式解说词
2014/02/01 职场文书
英文求职信写作小建议
2014/02/16 职场文书
护士找工作求职信
2014/07/02 职场文书
珍惜资源的建议书
2014/08/26 职场文书
2014班子“三严三实”对照检查材料思想汇报
2014/09/18 职场文书
政风行风整改方案
2014/10/25 职场文书
2014年社区民政工作总结
2014/12/02 职场文书
先进党员事迹材料
2014/12/24 职场文书
2016年“我们的节日·端午节”活动总结
2016/04/01 职场文书
毕业生自我鉴定范文
2019/05/13 职场文书
MySQL 那些常见的错误设计规范,你都知道吗
2021/07/16 MySQL