<template>
<div class="cartcontrol">
<transition name="move">
<div class="iconfont icon-remove_circle_outline" v-if="food.count" @click.stop="updateFoodCount(false)"></div>
</transition>
<div class="cart-count" v-if="food.count">{{food.count}}</div>
<div class="iconfont icon-add_circle" @click.stop="updateFoodCount(true)"></div>
</div>
</template>
<script>
export default {
props: {
food: Object
},
methods: {
updateFoodCount (isAdd) {
this.$store.dispatch('updateFoodCount', {isAdd, food: this.food})
}
}
}
</script>
// 同步更新food中的count值
updateFoodCount({commit}, {isAdd, food}) {
if (isAdd) {
commit(INCREMENT_FOOD_COUNT, {food})
} else {
commit(DECREMENT_FOOD_COUNT, {food})
}
},
【解决vue项目中给对象新增属性后页面不更新问题】
[INCREMENT_FOOD_COUNT](state, {food}) {
if(!food.count) { // 第一次增加
// food.count = 1 // 新增属性(没有数据绑定)
/*
对象
属性名
属性值
*/
Vue.set(food, 'count', 1) // 让新增的属性也有数据绑定
// 将food添加到cartFoods中
state.cartFoods.push(food)
} else {
food.count++
}
},
[DECREMENT_FOOD_COUNT](state, {food}) {
if(food.count) {// 只有有值才去减
food.count--
if(food.count===0) {
// 将food从cartFoods中移除
state.cartFoods.splice(state.cartFoods.indexOf(food), 1)
}
}
},