2016-09-14 22 views
9

Tôi đang sử dụng Vue 2.0-rc.6 (mới nhất tại thời điểm này) và Vue-router 2.0-rc.5 (mới nhất tại thời điểm này).Ví dụ Vue 2.0 không phải là sự kiện nghe được phát ra bởi các thành phần vue-router

Tôi đã cố gắng thực hiện this.$emit('custom-event') trong một trong các thành phần bộ định tuyến của mình và this.$on('custom-event',() => { console.log('I heard an event') }) trong ví dụ Vue của tôi nhưng sự kiện không được nghe. Bản thân thành phần bộ định tuyến đã nghe sự kiện nhưng không phải là phiên bản Vue.

Bất kỳ ý tưởng nào?

Kiểm tra số jsfiddle này.

+0

Tôi đã cập nhật fiddle của bạn: https://jsfiddle.net/wanxe/vnj71j8f/1/ https: // vuejs. org/guide/components.html # Non-Parent-Child-Communication (Cảm ơn Mani: http://stackoverflow.com/questions/40377977/how-to-create-a-hook-with-events-between-vue- 2-0 thành phần/40378611? Noredirect = 1 # comment68012089_40378611) – jnieto

Trả lời

8

Nhờ LinusBorg trong http://forum.vuejs.org/topic/5235/vue-2-0-instance-is-not-hearing-events-emitted-by-vue-router-components/2 để chỉ ra rằng sự kiện từ $ emit không được truyền sang phiên bản gốc.

Tôi đã không làm cho nó hoạt động mặc dù bằng cách sử dụng các giải pháp được đề xuất bởi LinusBorg. Thay vào đó, tôi đã làm cho nó hoạt động bằng cách thực hiện this.$router.app.$emit('eventname')

10

Sự kiện từ $ emit không được truyền sang phiên bản gốc. Cha mẹ phải tích cực lắng nghe nó trên các thành phần trong mẫu

<router-view @eventname="callbackMethod"> 
Các vấn đề liên quan