В main.js я создал eventBus
Vue.prototype.$eventHub = new Vue()
А в компоненте1
this.$eventHub.$emit('logged-in')
В component2 я пробовал это
beforeMount () {
this.$eventHub.$on('logged-in', function () {
console.log("logged in")
})
},
beforeDestroy() {
this.$eventHub.$off('logged-in')
}
Это ничего не печатает в консоли. Если я удаляю this.$eventHub.$off('logged-in')
, он работает нормально, но он выполняется столько раз, сколько $emit
выполняется. Что я здесь не так делаю? почему $off
не работает?
Невозможно передать также параметры
пытаюсь отправить сообщение используя $emit
this.$eventHub.$emit('logged-in', "some message")
в $on
this.$eventHub.$on('logged-in', this.testEvent)
Метод тестового события выглядит как
testEvent (params) {
console.log(params)
}
Параметры отображаются неопределенными.
Но если я сделаю это, все будет работать нормально
this.$eventHub.$on('logged-in', (params) => {
console.log(params)
})
Как передать параметры методу?