vue实现购物车结算功能


Posted in Javascript onJune 18, 2020

用vue做的购物车结算的功能,供大家参考,具体内容如下

vue实现购物车结算功能

代码:

<!-- 占位 -->
<template>
 <div>
 <div class="product_table">
 <div class="product_info">商品信息</div>
 <div class="product_info">商品金额</div>
 <div class="product_info">商品数量</div>
 <div class="product_info">总金额</div>
 <div class="product_info">编辑</div>
 </div>
 <div class="product_table" v-for="(item,index) in getProductList" :key="index">
 <div style="width:20px;height:20px;border-radius:10px;border:1px solid black;" @click="checkSingle(item)" :class="{checked:item.makeChoose}"></div>
 <div class="product_info">{{item.productName}}</div>
 <div class="product_info">{{item.productPrice}}</div>
 <span @click="changeNumber(item,1)">+</span>
 <input type="text" v-model="item.prductQty" style="width: 30px;">
 <span @click="changeNumber(item,-1)">-</span>
 <div class="product_info">{{item.productPrice*item.prductQty}}</div>
 <div class="product_info" @click="deleteProduct(index)">删除</div>
 </div>
 <div style="width:20px;height:20px;border-radius:10px;border:1px solid black;margin-top:10px" @click="checkAll()" :class="{checked:checkAllItem}"></div>
 <div>总价格:{{totalPrice}}</div>
 </div>
</template>
<script>
 import Vue from 'vue'
 export default {
 name: 'side-bar-placeholder',
 data () {
 return {
 getProductList:[
 {
 productName:'西瓜',
 productPrice:100,
 prductQty:3
 },
 {
 productName:'南瓜',
 productPrice:50,
 prductQty:2
 },
 {
 productName:'苹果',
 productPrice:300,
 prductQty:3
 },
 ],
 totalPrice:0, //总金额
 checkAllItem:false, //全部选中
 checkedList:[] //选中的数
 }
 },
 methods:{
 //删除某一项
 deleteProduct:function (index) {
 this.getProductList.splice(index,1) 
 this.calcTotalPrice() //这里要注意,当某一项删除时,如果你选中了,这里也是要做计算总价格的
 },
 //修改数量
 changeNumber:function (number,add) {
 if(add<0){
 number.prductQty--;
 if(number.prductQty<'1'){ //因为数量最低是1
 number.prductQty=1
 }
 }else{
 number.prductQty++;
 } 
 this.calcTotalPrice() 
 },
 //选中单个的
 checkSingle:function (item){
 if(typeof item.makeChoose=='undefined'){ //这里要注意,因为checked字段根本不在this.getProductList里面,所以你要自己赋值进去
 Vue.set(item, 'makeChoose',true) //这里应该设为true
 }else{
 item.makeChoose=!item.makeChoose
 } 
 this.calcTotalPrice() 
 },
 //选中所有的
 checkAll:function (){ 
 this.checkAllItem=!this.checkAllItem
 var _this=this
 if(this.checkAllItem){
 this.getProductList.forEach(element => {
 if(typeof element.makeChoose=='undefined'){
  Vue.set(element, 'makeChoose',_this.checkAllItem) //让每一小项跟随checkall来变化
 }else{
 element.makeChoose=_this.checkAllItem
 }
 });
 }else{
 this.getProductList.forEach(element => {
 if(typeof element.makeChoose=='undefined'){
  Vue.set(element, 'makeChoose',_this.checkAllItem)
 }else{
 element.makeChoose=_this.checkAllItem
 }
 });
 } 
 this.calcTotalPrice() 
 },
 //计算总金额
 calcTotalPrice:function () {
 var _this=this
 this.totalPrice=0
 this.getProductList.forEach((element,index) => {
 if(element.makeChoose){
 _this.totalPrice+=element.productPrice*element.prductQty //这里是一个累加的过程,所以要用+=
 }
 }); 
 },
 //让页面一进来就处于选中的状态
 makeAllChecked:function () {
 this.getProductList.forEach((item)=>{
 if(typeof item.makeChoose=='undefined'){
 Vue.set(item, 'makeChoose',true)
 }
 }) 
 }
 } ,
 watch:{
 //如果全部选中,那么全部选中的按钮应该变绿,如果一项不是,应该变空
 getProductList:{
 handler:function (item) {
 this.checkedList=this.getProductList.filter((element)=>{
 return element.makeChoose==true;
 }) 
 //选中数<总数据
 if(this.checkedList.length<this.getProductList.length){
 this.checkAllItem=false
 }else{
 this.checkAllItem=true
 } 
 },
 deep:true //这个deep:true一定要写,不然肯定不会时时变化的
 }
 } ,
 created:function (){
 this.makeAllChecked()
 }
 }
</script>
<style lang="less" scoped>
.product_table{
 display: flex;
 width: 100%;
}
.product_info{
 flex:1; 
}
.checked{
 background-color:green;
}
</style>

这个代码实现了什么?

1.在点击加减时每个产品的总价变化,所有产品的总价变化
2.选中时才会结算
3.如果全部选中了每个子项,全部选中按钮会变绿,如果有一项不选中,那么会变白
4.一般的购物车,我希望他一进来就是checked的状态,提高购买性
5.当我删除某一项时,如果这一项是已经checked了的,也要让他在计算总价时重新计算.

ps:最后一行的按钮是全部选中哦,或者是全部取消,忘记写了。

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

Javascript 相关文章推荐
什么是JavaScript
Aug 13 Javascript
javascript 显示当前系统时间代码
Dec 28 Javascript
jquery nth-child()选择器的简单应用
Jul 10 Javascript
jQuery对象和Javascript对象之间转换的实例代码
Mar 20 Javascript
javaScript如何处理从java后台返回的list
Apr 24 Javascript
Js调用Java方法并互相传参的简单实例
Aug 11 Javascript
为Jquery EasyUI 组件加上清除功能的方法(详解)
Apr 13 jQuery
浅谈AngularJs 双向绑定原理(数据绑定机制)
Dec 07 Javascript
微信小程序自定义toast弹窗效果的实现代码
Nov 15 Javascript
10行代码实现微信小程序滑动tab切换
Dec 28 Javascript
详解elementui之el-image-viewer(图片查看器)
Aug 30 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
Jan 16 Javascript
vue-cli4.x创建企业级项目的方法步骤
Jun 18 #Javascript
javascript实现文字跑马灯效果
Jun 18 #Javascript
node.js +mongdb实现登录功能
Jun 18 #Javascript
VSCode launch.json配置详细教程
Jun 18 #Javascript
JavaScript中使用Spread运算符的八种方法总结
Jun 18 #Javascript
通过实例了解JS执行上下文运行原理
Jun 17 #Javascript
从0搭建vue-cli4脚手架
Jun 17 #Javascript
You might like
php 禁止页面缓存输出
2009/01/07 PHP
php使用function_exists判断函数可用的方法
2014/11/19 PHP
Yii框架登录流程分析
2014/12/03 PHP
PHP指定截取字符串中的中英文或数字字符的实例分享
2016/03/18 PHP
Laravel 加载第三方类库的方法
2018/04/20 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
jQuery仿淘宝网产品品牌隐藏与显示效果
2015/09/01 Javascript
JQuery的Pager分页器实现代码
2016/05/03 Javascript
使用jQuery实现Web页面换肤功能的要点解析
2016/05/12 Javascript
原生js实现无限循环轮播图效果
2017/01/20 Javascript
JS对象深度克隆实例分析
2017/03/16 Javascript
利用jQuery解析获取JSON数据
2017/04/08 jQuery
vue + element-ui实现简洁的导入导出功能
2017/12/22 Javascript
使用weixin-java-tools完成微信授权登录、微信支付的示例
2018/09/26 Javascript
详解@angular/cli 改变默认启动端口两种方式
2018/11/29 Javascript
vue项目引入ts步骤(小结)
2019/10/31 Javascript
单利模式及python实现方式详解
2018/03/20 Python
pyecharts绘制中国2020肺炎疫情地图的实例代码
2020/02/12 Python
numpy库ndarray多维数组的维度变换方法(reshape、resize、swapaxes、flatten)
2020/04/28 Python
完美解决jupyter由于无法import新包的问题
2020/05/26 Python
Python中内建模块collections如何使用
2020/05/27 Python
python使用建议技巧分享(三)
2020/08/18 Python
戴尔加拿大官网:Dell加拿大
2016/09/17 全球购物
Hotels.com英国:全球领先的酒店住宿提供商
2019/01/24 全球购物
EJB与JAVA BEAN的区别
2016/08/29 面试题
房地产销售经理岗位职责
2014/01/01 职场文书
户籍证明的格式
2014/01/13 职场文书
简历中个人自我评价分享
2014/03/15 职场文书
依法行政工作汇报材料
2014/10/28 职场文书
布达拉宫的导游词
2015/02/02 职场文书
《七律·长征》教学反思
2016/02/16 职场文书
毕业生就业推荐表自我鉴定
2019/06/20 职场文书
python b站视频下载的五种版本
2021/05/27 Python
Win10系统下配置Java环境变量
2021/06/13 Java/Android
spring cloud gateway中如何读取请求参数
2021/07/15 Java/Android