Я обнаружил, что это так и есть, и чувствую, что есть некоторые проблемы с его использованием в разных местах.Насколько я понимаю, шина глобальных событий не рекомендуется в большинстве приложений, поскольку они могут привести к путанице.Рекомендуется использовать решение для управления состоянием, например, vuex.
Но в любом случае, просто пара моментов с приведенным выше кодом.Я не знаю, как вы создали свой автобус, но я знаю, как создать его следующим образом:
// main.js
const EventBus = new Vue()
Object.defineProperties(Vue.prototype, {
$bus: {
get: function () {
return EventBus
}
}
})
Это создает его и делает его глобальным.Затем его можно запустить в компоненте или компонентах с помощью:
<button @click="$bus.$emit('my-event')">click</button>
or
methods: {
triggerMyEvent () {
this.$bus.$emit('my-event', { ... pass some event data ... })
}
}
и прослушать:
created () {
this.$bus.$on('my-event', ($event) => {
console.log('My event has been triggered', $event)
this.eventItem = 'Event has now been triggered'
//this.$bus.$off('my-event')
})
},
Я обнаружил, что иногда это работает.Я не знаю почему, но это будет работать, тогда это вызовет несколько событий, и я думаю, что это потому, что это не завершено или что-то еще.Вы можете заметить, что я прокомментировал это. $ Bus.off, который, конечно, останавливает это, но потом снова не работает.Так что я не знаю, о чем это все.
Итак, вы идете, полный не ответ, как, например, Да, я тоже это имел, Нет, я не могу это исправить.