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 window.setTimeout() 的详细用法
Nov 04 Javascript
jquery div 居中技巧应用介绍
Nov 24 Javascript
javascript的函数作用域
Nov 12 Javascript
基于Jquery和html5实现炫酷的3D焦点图动画
Mar 02 Javascript
利用Vue.js框架实现火车票查询系统(附源码)
Feb 27 Javascript
vue组件间通信解析
Mar 01 Javascript
深入理解Commonjs规范及Node模块实现
May 17 Javascript
原生JS实现 MUI导航栏透明渐变效果
Nov 07 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
Vue.js构建你的第一个包并在NPM上发布的方法步骤
May 01 Javascript
layui实现三级联动效果
Jul 26 Javascript
关于AngularJS中几种Providers的区别总结
May 17 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/02/20 PHP
php中$_GET与$_POST过滤sql注入的方法
2014/11/03 PHP
PHP多态代码实例
2015/06/26 PHP
编辑浪子版表单验证类
2007/05/12 Javascript
js过滤数组重复元素的方法
2010/09/05 Javascript
js判断上传文件的类型和大小示例代码
2013/10/18 Javascript
jQuery 获取、设置HTML或TEXT内容的两种方法
2014/05/23 Javascript
javascript动态创建表格及添加数据实例详解
2015/05/13 Javascript
探究JavaScript函数式编程的乐趣
2015/12/14 Javascript
Active控件问题小结(附解决办法)
2016/06/09 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
通过npm引用的vue组件使用详解
2017/03/02 Javascript
JavaScript之事件委托实例(附原生js和jQuery代码)
2017/07/22 jQuery
微信小程序之数据缓存的实例详解
2017/09/29 Javascript
JS获取当前地理位置的方法
2017/10/25 Javascript
浅谈Webpack核心模块tapable解析
2018/09/11 Javascript
Vue 使用formData方式向后台发送数据的实现
2019/04/14 Javascript
js类的继承定义与用法分析
2019/06/21 Javascript
vue实现树形结构样式和功能的实例代码
2019/10/15 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
python中while循环语句用法简单实例
2015/05/07 Python
Python3 使用pillow库生成随机验证码
2019/08/26 Python
python做接口测试的必要性
2019/11/20 Python
Python:二维列表下标互换方式(矩阵转置)
2019/12/02 Python
django执行原始查询sql,并返回Dict字典例子
2020/04/01 Python
利用Python如何画一颗心、小人发射爱心
2021/02/21 Python
html5教程实现Photoshop渐变色效果
2013/12/04 HTML / CSS
Elemis美国官网:英国的第一豪华护肤品牌
2018/03/15 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
bonprix荷兰网上商店:便宜的服装、鞋子和家居用品
2020/07/04 全球购物
怎样声明一个匿名的内部类
2016/06/01 面试题
大学活动邀请函
2014/01/28 职场文书
电脑专业个人求职信范文
2014/02/04 职场文书
《挑山工》的教学反思
2014/02/16 职场文书
债务纠纷委托书
2014/08/30 职场文书
GO语言字符串处理函数之处理Strings包
2022/04/14 Golang