+
增加实现实例-
减少实现实例显示:App(list)——>Goods([Item-goods_count])——>Counter(num)
变化:Counter(num)——>EventBus——>App(list)
+
增加实现实例export default {props:{//商品id值,将来,使用EventBus方案,把数量传递到App.vue的时候,需要通知App组件,更新哪个商品的数量id:{type:Number,default:1}}
}
+
时点击方法组件处添加click方法
add方法发送obj对象给App.vue
methods:{add(){const obj={id:this.id,value:this.num+1}}}
import Vue from 'vue'export default new Vue()
导入eventBus
import bus from '@/components/eventBus.js'
add方法中发送事件给App.vue
add(){const obj={id:this.id,value:this.num+1}bus.$emit('share',obj)
}
导入eventBus
import bus from '@/components/eventBus.js'
created方法中接收
created() {//调用请求数据的方法this.initCartList();//接收自定义事件bus.$on('share',val=>{this.list.some(item=>{if(item.id===val.id){item.goods_count=val.valuereturn true}})})},
-
减少实现实例-
时点击方法组件处添加click方法
sub方法中发送事件给App.vue
methods:{add(){const obj={id:this.id,value:this.num+1}bus.$emit('share',obj)},sub(){if(this.num-1==0)returnconst obj={id:this.id,value:this.num-1}bus.$emit('share',obj)}
}
计算勾选商品的总数量
//计算属性computed: {//已勾选商品的总数量total(){return this.list.filter(item=>item.goods_state).reduce((t,item)=>(t+=item.goods_count),0)}},
定义勾选商品数量属性
props: {all:{type:Number,default:0}},
渲染到Footer组件中