невозможно использовать $ off и передавать параметры в eventbus в Vue - PullRequest
0 голосов
/ 01 ноября 2018

В 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 Ответ

0 голосов
/ 01 ноября 2018

Вы должны передать ссылку на $off

beforeMount () {
 this.$eventHub.$on('logged-in', this.onEventHandler)
},
beforeDestroy() {
 this.$eventHub.$off('logged-in', this.onEventHandler)
},
methods: {
  onEventHandler () {
    console.log("logged in")
  }
}
...