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陷阱清单
May 31 Javascript
js弹窗代码 可以指定弹出间隔
Jul 03 Javascript
使用js 设置url参数
Jul 08 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
Aug 03 Javascript
在Google 地图上实现做的标记相连接
Jan 05 Javascript
jQuery $.each遍历对象、数组用法实例
Apr 16 Javascript
JavaScript中判断两个字符串是否相等的方法
Jul 07 Javascript
百度地图api如何使用
Aug 03 Javascript
javascript每日必学之循环
Feb 19 Javascript
同步文本框内容JS代码实现
Aug 04 Javascript
基于better-scroll 实现歌词联动功能的代码
May 07 Javascript
通过实例解析javascript Date对象属性及方法
Nov 04 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&amp;&amp;mysql)三
2006/10/09 PHP
PHP简单系统数据添加以及数据删除模块源文件下载
2008/06/07 PHP
PHP 日常开发小技巧
2009/09/23 PHP
php面向对象全攻略 (十六) 对象的串行化
2009/09/30 PHP
PHP中通过语义URL防止网站被攻击的方法分享
2011/09/08 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
利用yahoo汇率接口实现实时汇率转换示例 汇率转换器
2014/01/14 PHP
PHP fopen()和 file_get_contents()应用与差异介绍
2014/03/19 PHP
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
2019/10/09 PHP
漂亮的thinkphp 跳转页封装示例
2019/10/16 PHP
js获取div高度的代码
2008/08/09 Javascript
jQuery中children()方法用法实例
2015/01/07 Javascript
TypeScript 中接口详解
2015/06/19 Javascript
JavaScript正则表达式exec/g实现多次循环用法示例
2017/01/17 Javascript
React简单介绍
2017/05/24 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
jQuery实现简单全选框
2020/09/13 jQuery
python扫描proxy并获取可用代理ip的实例
2017/08/07 Python
对Python实现简单的API接口实例讲解
2018/12/10 Python
Python基于百度云文字识别API
2018/12/13 Python
Python3使用Matplotlib 绘制精美的数学函数图形
2019/04/11 Python
pytorch torch.expand和torch.repeat的区别详解
2019/11/05 Python
python add_argument()用法解析
2020/01/29 Python
win10安装python3.6的常见问题
2020/07/01 Python
python与idea的集成的实现
2020/11/20 Python
借助HTML5 Canvas来绘制三角形和矩形等多边形的方法
2016/03/14 HTML / CSS
Liu Jo西班牙官网:意大利服装品牌
2019/09/11 全球购物
宝信软件JAVA工程师面试经历
2012/08/19 面试题
11月升旗仪式讲话稿
2014/02/15 职场文书
公益广告语集锦
2014/03/13 职场文书
高三毕业典礼主持词
2014/03/27 职场文书
试用期自我评价范文
2015/03/10 职场文书
2015年综治宣传月活动总结
2015/03/25 职场文书
幼儿园亲子活动通知
2015/04/24 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书