基于vue.js实现购物车


Posted in Javascript onJanuary 15, 2020

本文实例为大家分享了vue.js实现购物车的具体代码,供大家参考,具体内容如下

基于vue.js实现购物车

template

<template>
<div class="all">
<div class="head">
<span>购物车</span>
</div>
<ul class="menu">
<li class="li">
<input type="checkbox" id="all" v-model="checkedAll" @change="checkedAllChange()">
<label for="all"></label>
全选
</li>
<li class="li">商品代码</li>
<li class="li">商品名称</li>
<li class="li">商品单价</li>
<li class="li">商品数量</li>
<li class="li">商品库存</li>
<li class="li">商品小计</li>
</ul>
<div>
<ul v-for="data in data" :key="data.code" class="menu">
<li class="li">
<input type="checkbox" name="commodity" v-model="checked" :value="data" @change="changeAll()" >
</li>
<li class="li">{{data.code}}</li>
<li class="li">{{data.name}}</li>
<li class="li">¥{{data.price}}</li>
<li class="li">
<div @click="SubNum(data)">-</div>
<input type="number" v-model.lazy="data.number" @change="numberChange(data)" >
<div @click="AddNum(data)">+</div>
</li>
<li class="li">{{data.stock}}</li>
<li class="li">¥{{data.number*data.price}}</li>
</ul>
</div>
<div class="info">
<p>{{commodityNumber}}件商品</p>
<p>总计:<span>¥{{numberAll}}</span></p>
</div>
</div>
</template>

script

<script>
export default {
data() {
return {
checkedAll: false,
checked: [],
totalPrice: 0,
data: {
one: {
code: 10001,
name: "商品一",
price: 26,
number: 1,
stock: 6
},
two: {
code: 10002,
name: "商品二",
price: 34,
number: 1,
stock: 14
},
three: {
code: 10003,
name: "商品三",
price: 48,
number: 1,
stock: 2
},
four: {
code: 10004,
name: "商品四",
price: 63,
number: 1,
stock: 12
},
five: {
code: 10005,
name: "商品五",
price: 50,
number: 1,
stock: 92
}
}
};
},
mounted() {},
methods: {
//判断全选事件
checkedAllChange() {
if (this.checkedAll) {
for (let i in this.data) {
this.checked.push(this.data[i]);
}
} else {
this.checked = [];
}
},
changeAll() {
if (this.checked.length == Object.keys(this.data).length) {
this.checkedAll = true;
} else {
this.checkedAll = false;
}
},
// 加减
SubNum(data) {
data.number--;
if (data.number < 1) {
data.number = 1;
}
},
AddNum(data) {
data.number++;
if (data.number > data.stock) {
data.number = data.stock;
}
},
//输入
numberChange(data) {
if (data.number > data.stock) {
data.number = data.stock;
}
}
},
computed: {
//商品数量
commodityNumber() {
return this.checked.length;
},
//总价
numberAll() {
var numberAll = 0;
for (let i in this.checked) {
numberAll += this.checked[i].number * this.checked[i].price;
}
return numberAll;
}
}
};
</script>

css

<style lang="scss" scoped type="text/css">
ul,
li {
list-style: none;
}
.all {
width: 800px;
height: 500px;
background: #fff;
border: 1px solid #177ecb;
margin-left: 300px;
.head {
background: #177ecb;
height: 36px;
line-height: 36px;
color: #fff;
padding-left: 15px;
}
.menu {
height: 32px;
width: 100%;
border-bottom: 1px solid #d4d4d4;
padding: 0 15px;
display: flex;
.li {
line-height: 32px;
flex: 1;
border-right: 1px solid #d4d4d4;
text-align: center;
input[type="number"] {
width: 40px;
display: inline-block;
height: 20px;
}
div {
width: 20px;
height: 20px;
padding: 0;
display: inline-block;
background: #333;
color: #fff;
line-height: 20px;
text-align: center;
cursor: pointer;
}
div:active {
background: #999;
}
}
.li:nth-of-type(3) {
flex: 2;
}
.li:last-child {
border: 0;
}
}
.menu + div {
height: 350px;
margin-bottom: 20px;
border-bottom: 1px solid #177ecb;
}
.info {
text-align: right;
margin-right: 20px;
span {
color: #f00;
font-size: 20px;
font-weight: 900;
}
}
}
</style>

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
一段好玩的JavaScript代码
Dec 01 Javascript
模仿jQuery each函数的链式调用
Jul 22 Javascript
12个非常有创意的JavaScript小游戏
Mar 18 Javascript
可简单避免的三个JS发布错误的详细介绍
Aug 02 Javascript
Extjs 点击复选框在表格中增加相关信息行
Jul 12 Javascript
JavaScript中绑定事件的三种方式及去除绑定
Nov 05 Javascript
angularJS的radio实现单项二选一的使用方法
Feb 28 Javascript
Vue项目中如何引入icon图标
Mar 28 Javascript
JS动画实现回调地狱promise的实例代码详解
Nov 08 Javascript
vue 中Virtual Dom被创建的方法
Apr 15 Javascript
Vue Element UI + OSS实现上传文件功能
Jul 31 Javascript
javascript随机变色实例代码
Oct 15 Javascript
原生js+css调节音量滑块
Jan 15 #Javascript
Vue 图片压缩并上传至服务器功能
Jan 15 #Javascript
JS函数进阶之继承用法实例分析
Jan 15 #Javascript
JS函数进阶之prototy用法实例分析
Jan 15 #Javascript
JS函数基本定义与用法示例
Jan 15 #Javascript
JS几个常用的函数和对象定义与用法示例
Jan 15 #Javascript
JS自定义对象创建与简单使用方法示例
Jan 15 #Javascript
You might like
ThinkPHP 连接Oracle数据库的详细教程[全]
2012/07/16 PHP
浅析php设计模式之数据对象映射模式
2016/03/03 PHP
关于php中一些字符串总结
2016/05/05 PHP
kindeditor 加入七牛云上传的实例讲解
2017/11/12 PHP
PHP扩展mcrypt实现的AES加密功能示例
2019/01/29 PHP
PHP通过GD库实现验证码功能示例
2019/02/23 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
JS多物体 任意值 链式 缓冲运动
2012/08/10 Javascript
js遍历td tr等html元素
2012/12/13 Javascript
使用JavaScript动态设置样式实现代码(2)
2013/01/25 Javascript
javascript动态设置样式style实例分析
2015/05/13 Javascript
JavaScript实现单击下拉框选择直接跳转页面的方法
2015/07/02 Javascript
关于jquery form表单序列化的注意事项详解
2017/08/01 jQuery
Angular6封装http请求的步骤详解
2018/08/13 Javascript
在Vue项目中取消ESLint代码检测的步骤讲解
2019/01/27 Javascript
通过GASP让vue实现动态效果实例代码详解
2019/11/24 Javascript
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
Python列表list操作符实例分析【标准类型操作符、切片、连接字符、列表解析、重复操作等】
2017/07/24 Python
Python3数据库操作包pymysql的操作方法
2018/07/16 Python
Python补齐字符串长度的实例
2018/11/15 Python
Python3 修改默认环境的方法
2019/02/16 Python
Python 堆叠柱状图绘制方法
2019/07/29 Python
Python对Excel按列值筛选并拆分表格到多个文件的代码
2019/11/05 Python
基于Pyinstaller打包Python程序并压缩文件大小
2020/05/28 Python
python+pygame实现坦克大战小游戏的示例代码(可以自定义子弹速度)
2020/08/11 Python
Python如何设置指定窗口为前台活动窗口
2020/08/12 Python
详解python os.path.exists判断文件或文件夹是否存在
2020/11/16 Python
CSS3的 fit-content实现水平居中
2017/09/07 HTML / CSS
新东网科技Java笔试题
2012/07/13 面试题
北京某科技有限公司C# .net笔试题
2014/09/27 面试题
vue 中 get / delete 传递数组参数方法
2021/03/23 Vue.js
电子商务个人自荐信
2013/12/12 职场文书
2014年新农村建设工作总结
2014/12/01 职场文书
关于销售人员的年终工作总结要点
2019/08/15 职场文书
为什么mysql字段要使用NOT NULL
2021/05/13 MySQL
一篇文章弄懂Python中的内建函数
2021/08/07 Python