鍍金池/ 問答/HTML/ Vue實現(xiàn)類似于美團(tuán)外賣不同口味添加到購物車功能

Vue實現(xiàn)類似于美團(tuán)外賣不同口味添加到購物車功能

1.類似于美團(tuán)外賣點餐的功能,基本上的添加到購物車是實現(xiàn)了;
點擊添加到購物車,相同餐品數(shù)量相加,不同餐品個數(shù)相加

2.問題
現(xiàn)在新增加一個需求,有的餐品是有口味的。需要實現(xiàn),同樣餐品的相同口味,數(shù)量相加,同樣餐品的不同口味,個數(shù)相加
clipboard.png
如圖,招牌鴨脖是一樣的餐品,按照我之前的實現(xiàn)步驟,應(yīng)該是只顯示一條,數(shù)量是5,但是現(xiàn)在需要把口味加上去,并且區(qū)分開來,,不知道怎么做o(╥﹏╥)o

3.之前的代碼,點擊餐品,傳遞到vuex里面,在vuex里面,遍歷已選數(shù)組,如果id相同,就數(shù)量加加,如果id不同,就push進(jìn)去已選數(shù)組

4,求大神指點應(yīng)該怎么寫口味?

5.目前vuex里的代碼

  // 沒有口味
      if(!food.tasteItem){
        if(!food.count){
          Vue.set(food,'count',1);
          state.selectedFoods.push(food);
        } else {
          const storedFood = state.selectedFoods.find(f => f.goodsId === food.goodsId);
          if(storedFood){
            food.count++
          }
        }
      }
      // 有口味
      if(food.tasteItem) {
        let newFood = Object.assign({}, {...food});
        newFood.goodsId = newFood.goodsId + '-' + food.tasteItem.id;
        const storedFood = state.selectedFoods.find(f => f.goodsId === newFood.goodsId);
        console.log(storedFood);
        if(storedFood){
          food.count++;
        } else {
          Vue.set(food,'count',1);
          state.selectedFoods.push(food);
        }

      }
回答
編輯回答
久不遇

3.之前的代碼,點擊餐品,傳遞到vuex里面,在vuex里面,遍歷已選數(shù)組,如果id相同,就數(shù)量加加,如果id不同,就push進(jìn)去已選數(shù)組
這里的id換成食物id + 口味。就是二樓說的那種辦法。

//假設(shè)你的購物車對象如下
var cart = {
    "shopId(餐館id)": {
        "食物分類id": {
            "食物id": {
                //食物屬性
                "num": 1,
                "name": "1",
                "price": 21,
                "specs": "地獄無敵辣",//口味
            },
        }
    }
   }

//把你的食物id改成食物id=食物id+specs,像這樣
var cart = {
    "shopId(餐館id)": {
        "食物分類id": {
            "食物id + 食物id.specs": {
                //食物屬性
                "num": 1,
                "name": "1",
                "price": 21,
                "specs": "地獄無敵辣",//口味
            },
        }
    }
   }

這樣還不懂??!!

2018年9月23日 11:10
編輯回答
巷尾

最快的辦法,遍歷已選數(shù)組的時候,不止判斷id,也對附加條件,如口味之類的進(jìn)行是否相同的判斷

2018年1月25日 02:39
編輯回答
心夠野
var cart = { 
}  

function addToCart(food){
    var key = food.id + foo.taste;
    cart[key] = cart[key] || [];
    cart.push(food); 
}
2018年5月15日 07:20