javascript - Wie kann ich Instanzeigenschaften mithilfe eines Ereignisbusses bearbeiten?
天蓬老师
天蓬老师 2017-05-19 10:28:29
0
2
604

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?

天蓬老师
天蓬老师

欢迎选择我的课程,让我们一起见证您的进步~~

Antworte allen(2)
仅有的幸福

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

PHPzhong

这不是两个路由吗.怎么是兄弟组件

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage