【发布时间】:2020-10-21 00:25:09
【问题描述】:
我正在尝试设置一个 vue 事件总线来在我的组件之间发送事件,我在我的 app.js 文件 Vue.prototype.$eventBus = new Vue(); 中有这个,然后在一个组件中我有这个
this.$eventBus.$emit('pnc-person', remarkString);
在不同的组件中,在挂载的方法中我有这个,
this.$eventBus.$on('pnc-person', (data) => {
console.log(data);
});
事件发射成功,我可以在vue开发工具中看到,但它没有被第二个组件捕获,我正在使用vue路由器所以我不确定这是否会影响它。
我尝试过同时使用this.$route.$on 和this.$eventBus.$on,但似乎都没有记录任何内容
【问题讨论】:
-
是的,这可能会影响它 - 在您发出事件的那一刻,第二个组件可能尚未创建。
-
@IVOGELOV,我认为不会是这样,捕获事件的组件需要打开才能允许发出事件的组件打开
-
那么也许您可以尝试使用
this.$root.$on和this.$root.$emit而不是$eventBus? -
@IVOGELOV 没有任何区别
-
好吧,如果您可以在 CodePen/Jsfiddle/CodeSandbox 示例中重现该问题,那将会很有帮助。我们可以进行更好的故障排除。
标签: javascript vue.js vue-router vue-events