2016-09-14 5 views
9

Я использую Vue 2.0-rc.6 (последний на данный момент) и Vue-router 2.0-rc.5 (последний на данный момент).Экземпляр Vue 2.0 не слышит события, испущенные компонентами vue-router

Я попытался сделать this.$emit('custom-event') в одном из моих компонентов маршрутизатора и this.$on('custom-event',() => { console.log('I heard an event') }) в моем экземпляре Vue, но событие не слушалось. Сам компонент маршрутизатора слышал событие, но не экземпляр Vue.

Любая идея?

Отъезд jsfiddle.

+0

Я обновил свою скрипку: https://jsfiddle.net/wanxe/vnj71j8f/1/ https: // vuejs. org/guide/components.html # Non-Parent-Child-Communication (благодаря Mani: http://stackoverflow.com/questions/40377977/how-to-create-a-hook-with-events-between-vue- 2-0-компоненты/40378611? noredirect = 1 # comment68012089_40378611) – jnieto

ответ

8

Благодаря LinusBorg в http://forum.vuejs.org/topic/5235/vue-2-0-instance-is-not-hearing-events-emitted-by-vue-router-components/2, указав, что событие из $ emit не распространяется на родительский экземпляр.

Я не работал, хотя с помощью предлагаемого решения LinusBorg. Вместо этого я сделал это, выполнив this.$router.app.$emit('eventname')

10

Событие из $ emit не распространяется на родительский экземпляр. Родителя должен активно слушать его на компоненте в шаблоне

<router-view @eventname="callbackMethod">