在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ vue實(shí)現(xiàn)添加購物車的問題,同一物品如何只增加數(shù)量?

vue實(shí)現(xiàn)添加購物車的問題,同一物品如何只增加數(shù)量?

clipboard.png
如圖這種情況 同樣物品多次選擇 如何增加count數(shù)量 而并不是多次增加名字呢

<template>
  <div>
    <div class="order">
      <div class="order-head">
        
      </div>
      <div class = 'border'></div>
      <div class="order-list">
        <ul v-for = 'food in carList'>
          <li>{{food.name}}</li><span>{{carList.count}}</span>
        </ul>
       
      </div>

    </div>
     <div class = "foods-wrapper">
      <div class="fooList" v-for="(item,index) in goods" >
        <div v-for="food in item.foods" v-show="name==item.name" class = 'food' @click ="addCart(food)" >
          <span>{{food.name}}</span>
          <span>¥{{food.price}}</span>
   
          </div>
      </div>
    </div>
  <div class="navMenu">
    <ul>
       <li v-for="(item,index) in goods" :class="isSelected == index?'navMenu-selected':'nav'" @click = 'menuClick(item.name,index)'>
          <span class="text">
            
            {{item.name}}
          </span>
        </li>
    </ul>
    
  </div>
 
 </div>
</template>

<script>
import axios from 'axios'
import Vue from 'vue'
export default {
  props: {
    food: Object
  },
  name: 'navMenu',
   created() {
    axios.get('static/data.json').then((res) => {
      console.log(res.data.goods)
      this.goods = res.data.goods
      
    });
  },
  data() {
    return {
      goods: [],
      isSelected:0,
      carList:[],
      name:'food',
    }
  },
  computed:{

  
  },

  methods:{
   addCart(newFood) {
    //判斷是否購物車中已經(jīng)有商品,如果有就增加數(shù)量,反之加入這個商品
    let foodIndex = this.cartList.findIndex(food => food.name == newFood);
    //foodIndex為-1表示不存在 ,要加入商品
    if (foodIndex === -1) {
        cartList.push({
            name: newFood,
            count: 1
        })
     //foodIndex存在 ,更新數(shù)據(jù)
    } else {
        cartList[foodIndex].count++
    }
},
    menuClick (name,index) {
    this.isSelected = index 
    this.name=name
    }
  }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style scoped>
.navMenu{
 position: fixed;
 right: 1%;
 top:0;
 height: 100%;
 color:white;

}
.navMenu ul{
  list-style: none;
  background: #00B595;
  padding: 5%;

}
.navMenu ul li{
  margin:20% 0% 10%;
  padding: 5%;

}
.nav{

  list-style: none;
  background: #00B595;
  padding: 5%;
  margin:20% 0% 10%;
  padding: 5%;

}
.navMenu-selected{
  background: #00725E;
}
.foods-wrapper{
  background: #DBE0E3;
  position: absolute;
  top:3%;
  left:30%;
  width:60%;
  height:80%;
}
.foodList{
margin: 1%;


}
.food{
  background-color: #FFFFFF;
  border-radius: 8%;
  display: inline-block;
  height:90px;
  width:125px;
  margin: 1%;
  vertical-align: top;

}
.order{
  background: white;
  width: 25%;
  margin-top:1%;

}
.order-head{
  background-color: #00B595;
  width: 100%;
  height: 50px;
  margin-top:5%;

}
.border{
  border:1px solid #DBE0E3;
  margin-top: 2%;
}
.order-list{
  margin-top:1%;
  width:100%;
  height: 400px;
  background-color: yellow;
}


</style>
回答
編輯回答
鐧簞噯

addCart的邏輯有問題。。判斷是否有商品,有就更新數(shù)量,沒有就添加商品。代碼大概如下:

// cartList的結(jié)構(gòu)是這樣:
//  [{
//      name:"橙汁",
//      count:1
//  },{
//     name:"雪碧",
//     count:1
// }]
addCart(newFood) {
    //判斷是否購物車中已經(jīng)有商品,如果有就增加數(shù)量,反之加入這個商品
    let foodIndex = this.cartList.findIndex(food => food.name == newFood);
    //foodIndex為-1表示不存在 ,要加入商品
    if (foodIndex === -1) {
        cartList.push({
            name: newFood,
            count: 1
        })
     //foodIndex存在 ,更新數(shù)據(jù)
    } else {
        cartList[foodIndex].count++
    }
}

同樣你刪除商品時,如果刪除后數(shù)量為0,就從購物車中移除。
ps: 命令規(guī)范點(diǎn)啊,carList我改成cartList

2018年8月27日 12:03
編輯回答
失心人

addCart函數(shù)加一個商品id參數(shù),如:@click ="addCart(food.id),點(diǎn)擊的時候把商品的id傳入,拿到商品id后,去遍歷購物車數(shù)據(jù),如果id相等,則改變購物車數(shù)量,如不相等,則往購物車添加商品。
題外話:建議你直接把添加、刪除一并寫在一個函數(shù)中,為函數(shù)增加一個type參數(shù),如添加:@click ="operation(food.id,1)、如減少:@click ="operation(food.id,-1),,對購物車修改數(shù)據(jù)直接:購物車數(shù)量 + type,這樣可以在一個函數(shù)中處理所有的事件,更加簡單。

2017年1月27日 17:06