猿问

使用 event bus 怎样对实例属性操作?

使用了一个event bus进行兄弟组件进行通信,

这是其中一个组件:qdb_list

clickChange:function(obj){
      Bus.$emit('change',obj);
      this.$router.push({path:'/qdb_change'});
    }

触发click事件后会跳转到qdb_change组件

这是它的兄弟组件:qdb_change

在这里对属性进行的赋值操作全部都无效,得到的依然是空白值,该怎样才能使其生效?

还有就是每次第一次点击qdb_list里面的跳转时,都不会有console.log(obj)出来,是不是$on并没有监听到事件?

但是第二次点击时它就会出现两个console.log(obj),是不是说Bus.$emit('change',obj)这个事件的触发次数会不断累积?


MMTTMM
浏览 502回答 1
1回答

牧羊人nacy

你这两个组件是不同的没有同时展示,也就是一个创建了,另一个就被销毁了,这种情况就不应该使用event bus,而应该使用vuex,实现组件的数据共享,qdb_list页面emit的时候,qdb_change页面还没创建created也没执行,怎么能监听到触发的emit,一般观察者模式是先on再emit
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答