使用了一個event bus進行兄弟元件進行通信,
這是其中一個元件:qdb_list
clickChange:function(obj){
Bus.$emit('change',obj);
this.$router.push({path:'/qdb_change'});
}
觸發click事件後會跳到qdb_change元件
這是它的兄弟元件:qdb_change
#import Bus from '../bus.js'
export default {
name:'qdb_change',
data:function(){
return {
newname:'',
newstatus:'',
newinstruction:'',
text:'123456'
}
},
created:function(){
Bus.$on('change',obj=>{
console.log(obj);
this.newname=obj.qdb_name;
this.newstatus = obj.status;
this.newinstruction = obj.instruction;
});
}
}
在這裡對屬性進行的賦值操作全部都無效,得到的依然是空白值,該怎樣才能使其生效?
還有就是每次第一次點擊qdb_list裡面的跳轉時,都不會有console.log(obj)出來,是不是$on並沒有監聽到事件?
但是第二次點擊時它就會出現兩個console.log(obj),是不是說Bus.$emit('change',obj)這個事件的觸發次數會不斷累積?
仅有的幸福2017-05-19 10:30:29
你這兩個元件是不同的沒有同時展示,也就是一個創建了,另一個就被銷毀了,這種情況就不應該使用event bus,而應該使用vuex,實現組件的資料共享,qdb_list頁面emit的時候,qdb_change頁面還沒建立created也沒執行,怎麼能監聽到觸發的emit,一般觀察者模式是先on再emit