【问题标题】:Share data between non related components在不相关的组件之间共享数据
【发布时间】: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.$onthis.$eventBus.$on,但似乎都没有记录任何内容

【问题讨论】:

  • 是的,这可能会影响它 - 在您发出事件的那一刻,第二个组件可能尚未创建。
  • @IVOGELOV,我认为不会是这样,捕获事件的组件需要打开才能允许发出事件的组件打开
  • 那么也许您可以尝试使用this.$root.$onthis.$root.$emit 而不是$eventBus
  • @IVOGELOV 没有任何区别
  • 好吧,如果您可以在 CodePen/Jsfiddle/CodeSandbox 示例中重现该问题,那将会很有帮助。我们可以进行更好的故障排除。

标签: javascript vue.js vue-router vue-events


【解决方案1】:

当您的发射组件发送其事件时,您的侦听组件可能尚未构建。

您是否尝试将this.$eventBus.$on 部分放在created 而不是mounted 中?

【讨论】:

  • 我已经尝试过了,但它没有解决它,当事件发出时,组件肯定是构建的,因为发出事件的组件仅从捕获事件的组件中打开
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-06-24
  • 1970-01-01
  • 2019-09-05
  • 2020-08-31
  • 2018-02-17
相关资源
最近更新 更多