Sto tentando di creare un bus eventi globale in modo che due componenti di pari livello possano comunicare tra loro. Ho cercato in giro; tuttavia, non riesco a trovare alcun esempio su come implementarlo. Questo è quello che ho finora:Bus eventi globale Vue.js
var bus = new Vue();
Vue.component('Increment', {
template: "#inc",
data: function() {
return ({count: 0})
},
methods: {
increment: function(){
var increment = this.count++
bus.$emit('inc', increment)
}
}
})
Vue.component('Display', {
template: "#display",
data: function(){
return({count: 0})
},
created: function(){
bus.$on('inc', function(num){
alert(num)
this.count = num;
});
}
})
vm = new Vue({
el: "#example",
})
ho creato i miei modelli in questo modo: http://codepen.io/p-adams/pen/PzpZBg
mi piacerebbe la componente Increment
di comunicare il conteggio alla componente Display
. Non sono sicuro di cosa sto sbagliando in bus.$on()
.
Hmm. Ancora non funziona. Non sono sicuro di cosa stia succedendo, visto che non ho mai provato a creare un bus eventi. Ho implementato questo stesso programma in vuex. Proprio questo nella recente guida di vuejs 2, Evan menziona la possibilità di utilizzare un bus eventi per problemi semplici –
che funziona qui: http://codepen.io/anon/pen/KMWzLQ – Jeff
Un bug potrebbe essere che tu sei post- conteggio incrementale con 'var increment = this.count ++;'. Cambialo in 'var increment = ++ this.count;'. In questo modo "count" viene incrementato prima di essere assegnato a "incrementare" – asemahle