【发布时间】:2020-04-25 13:09:21
【问题描述】:
我正在处理基于 Promise 的图像上传。在“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')
}
})
示例代码 - 父组件
<Avatar @success="test" :user="user" />
从不调用父组件中的方法“test”,但在 vue 开发工具中调用事件。如果我在 Promise 之前发出事件,我会得到我想要的结果。
你能帮帮我吗? 亲切的问候
【问题讨论】:
-
在 Promise 中使用
$emit应该可以正常工作,只要你得到正确的this绑定。它在提供的代码中似乎是正确的,如果它是错误的,您会看到一个关于$emit不是函数的控制台错误。你如何确定test没有被调用?我建议在子组件中添加一些控制台日志记录或debugger语句,以准确检查其中发生了什么。我目前的感觉是问题不在于您发布的代码。 -
顺便说一句,
this.$root.$t是什么?我认为有一个拼写错误,应该是this.$root.$emit不是吗? -
另外,你能告诉我们
Helpers.callToast这里有什么吗?
标签: javascript vue.js promise