Tôi đang cố gắng tạo một bus sự kiện toàn cầu để hai thành phần anh chị em có thể giao tiếp với nhau. Tôi đã tìm kiếm xung quanh; tuy nhiên, tôi không thể tìm thấy bất kỳ ví dụ nào về cách triển khai. Đây là những gì tôi có cho đến nay:Xe buýt sự kiện toàn cầu 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",
})
Tôi tạo ra các mẫu của tôi như vậy: http://codepen.io/p-adams/pen/PzpZBg
Tôi muốn các thành phần Increment
để giao tiếp số lượng với thành phần Display
. Tôi không chắc chắn những gì tôi đang làm sai trong bus.$on()
.
Hmm. Nó vẫn không hoạt động. Không quá chắc chắn những gì đang xảy ra như tôi đã không bao giờ cố gắng để tạo ra một chiếc xe buýt sự kiện trước. Tôi đã thực hiện cùng một chương trình này trong vuex. Chỉ cần trong hướng dẫn vuejs 2 gần đây, Evan đề cập đến khả năng sử dụng một xe buýt sự kiện cho các vấn đề dễ dàng –
nó hoạt động ở đây: http://codepen.io/anon/pen/KMWzLQ – Jeff
Một lỗi có thể là bạn đang post- số gia tăng với 'var increment = this.count ++;'. Thay đổi nó thành 'var increment = ++ this.count;'. Bằng cách đó 'count' được tăng lên trước khi được gán cho' increment' – asemahle