Verwendung eines Ereignisbusses für die Kommunikation zwischen Geschwisterkomponenten,
Dies ist eine der Komponenten: qdb_list
clickChange:function(obj){
Bus.$emit('change',obj);
this.$router.push({path:'/qdb_change'});
}
Nachdem das Klickereignis ausgelöst wurde, springt es zur qdb_change-Komponente
Dies ist seine Geschwisterkomponente: 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;
});
}
}
Alle Zuweisungsvorgänge zu den Attributen hier sind ungültig und das Ergebnis ist immer noch ein leerer Wert. Wie kann ich es wirksam machen?
Außerdem wird console.log(obj) jedes Mal, wenn Sie zum ersten Mal auf den Sprung in qdb_list klicken, nicht angezeigt. Ist es möglich, dass $on das Ereignis nicht überwacht hat?
Aber wenn Sie zum zweiten Mal darauf klicken, werden zwei console.log(obj) angezeigt. Bedeutet das, dass sich die Anzahl der Auslöser des Bus.$emit('change',obj)-Ereignisses weiter erhöht?
你这两个组件是不同的没有同时展示,也就是一个创建了,另一个就被销毁了,这种情况就不应该使用event bus,而应该使用vuex,实现组件的数据共享,qdb_list页面emit的时候,qdb_change页面还没创建created也没执行,怎么能监听到触发的emit,一般观察者模式是先on再emit
这不是两个路由吗.怎么是兄弟组件