【发布时间】:2020-02-12 04:48:58
【问题描述】:
我正在尝试创建一个从Source.vue 发出的全局事件总线,以便在Destination.vue 中捕获。后一个组件必须在事件被捕获时运行一个函数。
Source.vue:
.then(() => {
eventBus.$emit("fireMethod");
})
Destination.vue:
updated() {
eventBus.$on("fireMethod", () => {
this.reqMethod();
});
}
main.js:
export const eventBus = new Vue();
我还在这两个组件中导入了 main.js 文件。但这似乎不起作用,因为事件根本没有被捕获。这里有什么问题? 提前致谢
【问题讨论】:
-
您的问题中没有足够的上下文来确定问题。
Source.vue中的代码什么时候执行?Destination.vue什么时候挂载?在这里使用updated钩子有什么特别的原因(例如,而不是mounted)? -
嘿@tony19,
Source.vue中的代码是在数据库中执行了某些操作后执行的(在这种情况下是删除)。此处Destination.vue显示了该数据,因此我希望每次数据库发生更改时都可以更新它,而无需我访问该组件。如果我使用mounted钩子就不会发生这种情况,所以我必须使用updated钩子 -
好的,但这并不能说明
Destination何时收听与Source中发生的事件相关的事件的时间线。有可能Destination注册了事件之后Source已经发出它。请注意,事件不会为侦听器排队。您能否提供一个可重现的示例(例如,在 Codesandbox 中)?
标签: vue.js vuejs2 vue-component