Vue $emit 在 Promise 中

Nis*_*Nis 3 javascript promise vue.js

我正在处理图像上传 - 基于承诺。在“then”回调中我想 $emit 一个事件。我称之为“成功”。我的 VueDevTools 显示了一个成功事件,但在父组件中永远不会调用“链接”方法。this.$emit('success') 是否有可能在 Promises 中不起作用?

示例代码 - 子组件:

UsersAPI.updateAvatar(this.user.id, data, fileExt).then(res => {
  if (res) {
    Helpers.callToast(this, 'is-success', this.$root.$t('profile.avatar_upload'))
    this.$emit('success')
  }
})
Run Code Online (Sandbox Code Playgroud)

示例代码 - 父组件

<Avatar @success="test" :user="user" />
Run Code Online (Sandbox Code Playgroud)

父组件中的“test”方法永远不会被调用,但该事件会在 vue 开发工具中被调用。如果我在 Promise 之前发出事件,我就会得到我想要的结果。

你能帮我吗?亲切的问候

小智 8

就我而言,当初始化 API 请求时,使用“v-if”指令将子组件从父组件中删除。

然后,当我的请求完成时,子组件正确地发出了一个事件,但此时子组件没有在父组件的 DOM 中呈现,因此父组件无法侦听该事件。