shopcart组件不响应添加商品
来源:17-17 cartcontrol组件(3)

ReturnNu11
2017-05-29
添加商品的时候底下购物车就会相应一次,而且减少商品的时候也不会有反应,Vue版本是2.3
goods.vue
<shopcart :delivery-price="seller.deliveryPrice" :min-price="seller.minPrice" :selectFoods="selectFoods"></shopcart>
selectFoods () { let foods = [] this.goods.forEach((good) => { good.foods.forEach((food) => { if (food.count) { foods.push(food) } }) }) return foods }
cartcontrol.vue
<template> <div class="cartcontrol"> <transition name="move"> <div class="cart-decrease" v-show="foodCount > 0" @click.stop.prevent="decreaseCart"> <span class="icon-remove_circle_outline inner"></span> </div> </transition> <div class="cart-count" v-show="foodCount > 0">{{foodCount}}</div> <div class="cart-add icon-add_circle" @click.stop.prevent="addCart"></div> </div> </template> <script> import Vue from 'Vue' export default { data () { return { foodCount: null } }, props: { food: { type: Object } }, methods: { addCart (event) { if (!event._constructed) { return } if (!this.food.count) { Vue.set(this.food, 'count', 1) this.foodCount = 1 } else { this.food.count++ this.foodCount = this.food.count } this.$emit('add', event.target) }, decreaseCart (event) { if (!event._constructed) { return } if (this.foodCount) { this.food.count-- this.foodCount = this.food.count } } } } </script>
shopcart.vue
<template> <div class="shopcart"> <div class="content"> <div class="content-left"> <div class="logo-wrapper"> <div class="logo" :class="{'heightlight': totalCount > 0}"> <span class="icon-shopping_cart" :class="{'heightlight': totalCount > 0}"></span> </div> <div class="num" v-show="totalCount > 0">{{totalCount}}</div> </div> <div class="price" :class="{'heightlight': totalPrice > 0}">¥{{totalPrice}}元</div> <div class="desc">另需配送费¥{{deliveryPrice}}</div> </div> <div class="content-right"> <div class="pay" :class="payClass">{{payDesc}}</div> </div> </div> </div> </template> <script> export default { props: { selectFoods: { tyep: Array, default () { return [{ price: 0, count: 0 }] } }, deliveryPrice: { type: Number, default: 0 }, minPrice: { type: Number, default: 0 } }, computed: { totalPrice () { let total = 0 this.selectFoods.forEach((food) => { total += food.price * food.count }) return total }, totalCount () { let count = 0 this.selectFoods.forEach((food) => { count += food.count }) return count }, payDesc () { if (this.totalPrice === 0) { return `¥${this.minPrice}元起送` } else if (this.totalPrice < this.minPrice) { let diff = this.minPrice - this.totalPrice return `还差¥${diff}元起送` } else { return '去结算' } }, payClass () { return this.totalPrice >= 20 ? 'enough' : 'not-enough' } } } </script>
写回答
1回答
-
ReturnNu11
提问者
2017-05-29
相同商品不管点击多少次购物车都只显示一次的数量和价格,但是点击添加不同的商品购物车才会变(包括上一次点击添加的商品)
00
相似问题