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 面向对象编程基础:封装
Aug 21 Javascript
Javascript继承(上)——对象构建介绍
Nov 08 Javascript
多种方法实现JS动态添加事件
Nov 01 Javascript
node.js中的fs.fstatSync方法使用说明
Dec 15 Javascript
JS实现在网页中弹出一个输入框的方法
Mar 03 Javascript
教你JS中的运算符乘方、开方及变量格式转换
Aug 09 Javascript
jquery对所有input type=text的控件赋值实现方法
Dec 02 Javascript
bootstrap css样式之表单
Jan 19 Javascript
从零开始学习Node.js系列教程六:EventEmitter发送和接收事件的方法示例
Apr 13 Javascript
JavaScript使用readAsDataUrl方法预览图片
May 10 Javascript
小程序兼容安卓和IOS数据处理问题及坑
Sep 18 Javascript
小程序实现简单语音聊天的示例代码
Jul 24 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在字符串中查找另一个字符串
2008/11/19 PHP
PHP创建多级目录的两种方法
2016/10/28 PHP
php中字符串和整数比较的操作方法
2019/06/06 PHP
基于jQuery的获得各种控件Value的方法
2010/11/19 Javascript
jQuery插件Elastislide实现响应式的焦点图无缝滚动切换特效
2015/04/12 Javascript
JavaScript实现select添加option
2015/07/03 Javascript
asp知识整理笔记3(问答模式)
2015/09/27 Javascript
javascript动态添加checkbox复选框的方法
2015/12/23 Javascript
理解JavaScript表单的基础知识
2016/01/25 Javascript
BootstrapValidator不触发校验的实现代码
2016/09/28 Javascript
js学习总结之DOM2兼容处理this问题的解决方法
2017/07/27 Javascript
深入理解ES7的async/await的用法
2017/09/09 Javascript
vue中接口域名配置为全局变量的实现方法
2018/09/20 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
vue下axios拦截器token刷新机制的实例代码
2020/01/17 Javascript
vue+element_ui上传文件,并传递额外参数操作
2020/12/05 Vue.js
[01:32:10]NAVI vs VG Supermajor 败者组 BO3 第一场 6.5
2018/06/06 DOTA
Python的Bottle框架中返回静态文件和JSON对象的方法
2015/04/30 Python
spyder常用快捷键(分享)
2017/07/19 Python
微信跳一跳python辅助软件思路及图像识别源码解析
2018/01/04 Python
Python设计模式之工厂方法模式实例详解
2019/01/18 Python
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
python 实现将小图片放到另一个较大的白色或黑色背景图片中
2019/12/12 Python
Python利用Scrapy框架爬取豆瓣电影示例
2020/01/17 Python
使用opencv中匹配点对的坐标提取方式
2020/06/04 Python
python time.strptime格式化实例详解
2021/02/03 Python
浅析border-radius如何兼容IE
2016/04/19 HTML / CSS
英国二手物品交易网站:Preloved
2017/10/06 全球购物
eBay澳大利亚站:eBay.com.au
2018/02/02 全球购物
跟单文员岗位职责
2014/01/03 职场文书
中职三好学生事迹材料
2014/08/24 职场文书
2014年领班工作总结
2014/11/25 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
2017元旦晚会开幕词
2016/03/03 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python
Python实现猜拳与猜数字游戏的方法详解
2022/04/06 Python