Невозможно использовать $off и передавать параметры в eventbus в Vue
В 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)
})
Как я могу передать параметры в метод?
1 ответ
Вы должны передать ссылку на $off
beforeMount () {
this.$eventHub.$on('logged-in', this.onEventHandler)
},
beforeDestroy() {
this.$eventHub.$off('logged-in', this.onEventHandler)
},
methods: {
onEventHandler () {
console.log("logged in")
}
}