最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue實現(xiàn)購物車結(jié)算功能

 更新時間:2021年09月07日 10:52:09   作者:周小姐  
這篇文章主要為大家詳細介紹了vue實現(xiàn)購物車結(jié)算功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

用vue做的購物車結(jié)算的功能,供大家參考,具體內(nèi)容如下

代碼:

<!-- 占位 -->
<template>
 <div>
 <div class="product_table">
 <div class="product_info">商品信息</div>
 <div class="product_info">商品金額</div>
 <div class="product_info">商品數(shù)量</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:[] //選中的數(shù)
 }
 },
 methods:{
 //刪除某一項
 deleteProduct:function (index) {
 this.getProductList.splice(index,1) 
 this.calcTotalPrice() //這里要注意,當(dāng)某一項刪除時,如果你選中了,這里也是要做計算總價格的
 },
 //修改數(shù)量
 changeNumber:function (number,add) {
 if(add<0){
 number.prductQty--;
 if(number.prductQty<'1'){ //因為數(shù)量最低是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) //這里應(yīng)該設(shè)為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 //這里是一個累加的過程,所以要用+=
 }
 }); 
 },
 //讓頁面一進來就處于選中的狀態(tài)
 makeAllChecked:function () {
 this.getProductList.forEach((item)=>{
 if(typeof item.makeChoose=='undefined'){
 Vue.set(item, 'makeChoose',true)
 }
 }) 
 }
 } ,
 watch:{
 //如果全部選中,那么全部選中的按鈕應(yīng)該變綠,如果一項不是,應(yīng)該變空
 getProductList:{
 handler:function (item) {
 this.checkedList=this.getProductList.filter((element)=>{
 return element.makeChoose==true;
 }) 
 //選中數(shù)<總數(shù)據(jù)
 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>

這個代碼實現(xiàn)了什么?

1.在點擊加減時每個產(chǎn)品的總價變化,所有產(chǎn)品的總價變化
2.選中時才會結(jié)算
3.如果全部選中了每個子項,全部選中按鈕會變綠,如果有一項不選中,那么會變白
4.一般的購物車,我希望他一進來就是checked的狀態(tài),提高購買性
5.當(dāng)我刪除某一項時,如果這一項是已經(jīng)checked了的,也要讓他在計算總價時重新計算.

ps:最后一行的按鈕是全部選中哦,或者是全部取消,忘記寫了。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Vue3中實現(xiàn)過渡動畫的方法小結(jié)

    Vue3中實現(xiàn)過渡動畫的方法小結(jié)

    這篇文章主要為大家詳細介紹了Vue3中實現(xiàn)過渡動畫的一些常用方法,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2024-10-10
  • vue從零實現(xiàn)一個消息通知組件的方法詳解

    vue從零實現(xiàn)一個消息通知組件的方法詳解

    這篇文章主要介紹了vue從零實現(xiàn)一個消息通知組件的方法,結(jié)合實例形式分析了vue實現(xiàn)消息通知組件的具體原理、實現(xiàn)步驟、與相關(guān)操作技巧,需要的朋友可以參考下
    2020-03-03
  • vue mounted組件的使用

    vue mounted組件的使用

    這篇文章主要介紹了vue mounted組件的使用,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-06-06
  • vue-router的兩種模式的區(qū)別

    vue-router的兩種模式的區(qū)別

    這篇文章主要介紹了vue-router的兩種模式的區(qū)別,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-05-05
  • Vue?vant-ui框架實現(xiàn)上拉加載下拉刷新功能

    Vue?vant-ui框架實現(xiàn)上拉加載下拉刷新功能

    功能需求——獲取后端接口返回的數(shù)據(jù),實現(xiàn)列表數(shù)據(jù)上滑加載更多下一頁數(shù)據(jù),下拉數(shù)據(jù)刷新功能,結(jié)合vant-ui框架實現(xiàn)??芍苯訁⒖际褂?/div> 2022-09-09
  • vue實現(xiàn)拖拽小圖標(biāo)

    vue實現(xiàn)拖拽小圖標(biāo)

    這篇文章主要為大家詳細介紹了vue實現(xiàn)拖拽小圖標(biāo),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • vue3.0 vue-router4.0打包后頁面空白的解決方法

    vue3.0 vue-router4.0打包后頁面空白的解決方法

    本文主要介紹了vue3.0 vue-router4.0打包后頁面空白的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-02-02
  • Vue+Openlayer批量設(shè)置閃爍點的實現(xiàn)代碼(基于postrender機制)

    Vue+Openlayer批量設(shè)置閃爍點的實現(xiàn)代碼(基于postrender機制)

    本篇文章給大家介紹基于postrender機制使用Vue+Openlayer批量設(shè)置閃爍點的實現(xiàn)代碼,代碼簡單易懂,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-09-09
  • vue?路由判斷方式

    vue?路由判斷方式

    這篇文章主要介紹了vue?路由判斷方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue中緩存組件keep alive的介紹及使用方法

    vue中緩存組件keep alive的介紹及使用方法

    這篇文章主要介紹了vue緩存組件keepalive的相關(guān)資料,keep-alive組件是使用 include exclude這兩個屬性傳入組件名稱來確認哪些可以被緩存的,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2022-08-08

最新評論

南投市| 黔西| 涪陵区| 内丘县| 巴青县| 牡丹江市| 临桂县| 灯塔市| 南江县| 泰来县| 苍梧县| 九江县| 剑河县| 东乌| 海盐县| 琼海市| 潮安县| 梨树县| 黑水县| 巴青县| 鸡泽县| 友谊县| 宁津县| 北辰区| 石棉县| 加查县| 巍山| 高青县| 红安县| 印江| 嘉峪关市| 且末县| 安塞县| 左权县| 天镇县| 南和县| 阿合奇县| 昆明市| 九龙坡区| 博爱县| 云安县|