电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

vue實現購物車結算功能

瀏覽:15日期:2023-01-12 13:47:41

用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 v-for='(item,index) in getProductList' :key='index'> <div @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 @click='deleteProduct(index)'>刪除</div> </div> <div @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:最后一行的按鈕是全部選中哦,或者是全部取消,忘記寫了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持好吧啦網。

標簽: Vue
相關文章:
主站蜘蛛池模板: 海德莱电力(HYDELEY)-无功补偿元器件生产厂家-二十年专业从事电力电容器 | 【孔氏陶粒】建筑回填陶粒-南京/合肥/武汉/郑州/重庆/成都/杭州陶粒厂家 | 沈阳缠绕包装机厂家直销-沈阳海鹞托盘缠绕包装机价格 | 衢州装饰公司|装潢公司|办公楼装修|排屋装修|别墅装修-衢州佳盛装饰 | 苏州西朗门业-欧盟CE|莱茵UL双认证的快速卷帘门品牌厂家 | 气胀轴|气涨轴|安全夹头|安全卡盘|伺服纠偏系统厂家-天机传动 | 海水晶,海水素,海水晶价格-潍坊滨海经济开发区强隆海水晶厂 | atcc网站,sigma试剂价格,肿瘤细胞现货,人结肠癌细胞株购买-南京科佰生物 | 代理记账_免费注册公司_营业执照代办_资质代办-【乐财汇】 | 干式磁选机_湿式磁选机_粉体除铁器-潍坊国铭矿山设备有限公司 | 预制舱-电力集装箱预制舱-模块化预制舱生产厂家-腾达电器设备 | China plate rolling machine manufacturer,cone rolling machine-Saint Fighter | 加气混凝土砌块设备,轻质砖设备,蒸养砖设备,新型墙体设备-河南省杜甫机械制造有限公司 | 金刚网,金刚网窗纱,不锈钢网,金刚网厂家- 河北萨邦丝网制品有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 上海心叶港澳台联考一对一培训_上海心叶港澳台联考,港澳台联考一对一升学指导 | 胃口福饺子加盟官网_新鲜现包饺子云吞加盟 - 【胃口福唯一官网】 | 纸张环压仪-纸张平滑度仪-杭州纸邦自动化技术有限公司 | POS机办理_个人pos机免费领取-银联pos机申请首页 | 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | T恤衫定做,企业文化衫制作订做,广告T恤POLO衫定制厂家[源头工厂]-【汉诚T恤定制网】 | 南京PVC快速门厂家南京快速卷帘门_南京pvc快速门_世界500强企业国内供应商_南京美高门业 | 法兰连接型电磁流量计-蒸汽孔板节流装置流量计-北京凯安达仪器仪表有限公司 | 杭州用友|用友软件|用友财务软件|用友ERP系统--杭州协友软件官网 | 国产频谱分析仪-国产网络分析仪-上海坚融实业有限公司 | 亿立分板机_曲线_锯片式_走刀_在线式全自动_铣刀_在线V槽分板机-杭州亿协智能装备有限公司 | 宁夏活性炭_防护活性炭_催化剂载体炭-宁夏恒辉活性炭有限公司 | 重庆波纹管|重庆钢带管|重庆塑钢管|重庆联进管道有限公司 | 媒介云-全网整合营销_成都新闻媒体发稿_软文发布平台 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 横河变送器-横河压力变送器-EJA变送器-EJA压力变送器-「泉蕴仪表」 | 剪刃_纵剪机刀片_分条机刀片-南京雷德机械有限公司 | 模具硅橡胶,人体硅胶,移印硅胶浆厂家-宏图硅胶科技 | 德国GMN轴承,GMN角接触球轴承,GMN单向轴承,GMN油封,GMN非接触式密封 | 北京易通慧公司从事北京网站优化,北京网络推广、网站建设一站式服务商-北京网站优化公司 | 电动液压篮球架_圆管地埋式篮球架_移动平箱篮球架-强森体育 | 电表箱-浙江迈峰电力设备有限公司-电表箱专业制造商 | 电动卫生级调节阀,电动防爆球阀,电动软密封蝶阀,气动高压球阀,气动对夹蝶阀,气动V型调节球阀-上海川沪阀门有限公司 | HEYL硬度计量泵-荧光法在线溶解氧仪-净时测控技术(上海)有限公司 | 一礼通 (www.yilitong.com)-企业礼品解决方案一站式服务平台 | 自清洗过滤器,浅层砂过滤器,叠片过滤器厂家-新乡市宇清净化 |