是否可以从 Vuejs 中安装发出?

Is it possible to emit from mounted in Vuejs?

我熟悉通过总线在事件上发送数据,这些工作很好,但现在我想发送一些东西,但我没有事件可以绑定它。

我尝试在挂载上发出它,但没有成功,如下所示:

mounted(){
  bus.$emit('send-test', this.test);
},

当您在 parent 的 mounted 生命周期事件中为 中发出的事件添加事件处理程序时child 的 mounted 事件,处理程序将不会捕获 child 发出的事件,因为处理程序是在 之后添加的child 已经发出事件。基本上事件的循环是这样的。

  1. Parent 的创造
  2. Child 的创造
  3. Child的挂载
  4. Parent的挂载

显然还有其他生命周期事件发生,但在这种情况下这是重要的顺序。

如果您想处理 child 中发出的事件,您需要在 child 之前创建处理程序(调用 $on) s mounted 事件。

$nextTick也可能有用,它解决了我的一个问题,可以这样使用

async mounted() {
  await this.$nextTick()
  // Code that will run only after the entire view has been rendered
}