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 相关文章推荐
XP折叠菜单&amp;仿QQ2006菜单
Dec 16 Javascript
nicejforms——美化表单不用愁
Feb 20 Javascript
javascript一些不错的函数脚本代码
Sep 10 Javascript
使用 js+正则表达式为关键词添加链接
Nov 11 Javascript
超漂亮的jQuery图片轮播特效
Nov 24 Javascript
node.js 中国天气预报 简单实现
Jun 06 Javascript
js 获取站点应用名的简单实例
Aug 18 Javascript
使用Promise封装小程序wx.request的实现方法
Nov 13 Javascript
Vue清除定时器setInterval优化方案分享
Jul 21 Javascript
js调用网络摄像头的方法
Dec 05 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
react中useState使用:如何实现在当前表格直接更改数据
Aug 05 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下使用iconv需要注意的问题
2010/11/20 PHP
php中根据变量的类型 选择echo或dump
2012/07/05 PHP
详谈PHP文件目录基础操作
2014/11/11 PHP
通过event对象的fromElement属性解决热区设置主实体的一个bug
2008/12/22 Javascript
node.js中的socket.io入门实例
2014/04/26 Javascript
jQuery 过滤方法filter()选择具有特殊属性的元素
2014/06/15 Javascript
对JavaScript客户端应用编程的一些建议
2015/06/24 Javascript
学习JavaScript设计模式之状态模式
2016/01/08 Javascript
详解nodeJS之二进制buffer对象
2017/06/03 NodeJs
Webpack常见静态资源处理-模块加载器(Loaders)+ExtractTextPlugin插件
2017/06/29 Javascript
使用layui+ajax实现简单的菜单权限管理及排序的方法
2019/09/10 Javascript
Vue实现简易计算器
2020/02/25 Javascript
[55:35]DOTA2-DPC中国联赛 正赛 CDEC vs Dragon BO3 第二场 1月22日
2021/03/11 DOTA
Python读写Excel文件方法介绍
2014/11/22 Python
Python中urllib+urllib2+cookielib模块编写爬虫实战
2016/01/20 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python实现八皇后问题示例代码
2018/12/09 Python
Python一键查找iOS项目中未使用的图片、音频、视频资源
2019/08/12 Python
python3实现弹弹球小游戏
2019/11/25 Python
Python新手学习函数默认参数设置
2020/06/03 Python
html5使用Drag事件编辑器拖拽上传图片的示例代码
2017/08/22 HTML / CSS
澳大利亚最大的网上油画销售画廊:Direct Art Australia
2018/04/15 全球购物
瑞士最大的图书贸易公司:Orell Füssli
2019/12/28 全球购物
俄罗斯运动、健康和美容产品在线商店:Lactomin.ru
2020/07/23 全球购物
英国珠宝网站Argento: PANDORA、Olivia Burton和Nomination等
2020/05/08 全球购物
抽象方法、抽象类怎样声明
2014/10/25 面试题
接口的多继承会带来哪些问题
2015/08/17 面试题
软件测试题目
2013/02/27 面试题
实习生自荐信范文
2013/11/13 职场文书
网络程序员自荐信
2014/01/25 职场文书
毕业生工作求职信
2014/06/30 职场文书
职业生涯规划书怎么写?
2014/09/14 职场文书
房产销售独家委托书范本
2014/10/01 职场文书
社保转移委托书范本
2014/10/08 职场文书
2015国际残疾人日活动总结
2015/03/24 职场文书
2016年秋季趣味运动会开幕词
2016/03/04 职场文书