Utilisation d'un bus d'événements pour la communication entre composants frères et sœurs,
C'est l'un des composants : qdb_list
clickChange:function(obj){
Bus.$emit('change',obj);
this.$router.push({path:'/qdb_change'});
}
Une fois l'événement click déclenché, il passera au composant qdb_change
Voici son composant frère : 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;
});
}
}
Toutes les opérations d'affectation aux attributs ici ne sont pas valides et le résultat est toujours une valeur vide. Comment puis-je la rendre efficace ?
De plus, chaque fois que vous cliquez sur le saut dans qdb_list pour la première fois, console.log(obj) ne sortira pas. Est-il possible que $on n'ait pas surveillé l'événement ?
Mais lorsque vous cliquez dessus pour la deuxième fois, deux console.log(obj) apparaîtront. Cela signifie-t-il que le nombre de déclencheurs de l'événement Bus.$emit('change',obj) continuera à s'accumuler ?
Vos deux composants sont différents et ne sont pas affichés en même temps, c'est-à-dire que l'un est créé et l'autre est détruit. Dans ce cas, le bus d'événements ne doit pas être utilisé, mais vuex doit être utilisé pour réaliser le partage de données des composants. Page qdb_list submit À l'époque, la page qdb_change n'a pas été créée ni exécutée. Comment pouvons-nous surveiller l'émission déclenchée ? Généralement, le mode observateur consiste à s'activer d'abord, puis à émettre
.Ces deux itinéraires ne sont-ils pas des composants frères