在下面的代码中:
export default {
props: ['note'],
methods: {
remove(){
NoteRepo.remove(this.note, (err) => {
if (err) {
console.log('Should Fire')
this.$emit('alerted', {
type: 'error',
message: 'Failed to remove note'
});
}
})
}
}
}
当调用remove函数时,控制台会输出"Should Fire",但$emit事件不会被触发。如果我将$emit移动到回调之外,就像这样:
export default {
props: ['note'],
methods: {
remove(){
this.$emit('alerted', {
type: 'error',
message: 'Failed to remove note'
});
NoteRepo.remove(this.note, (err) => {
if (err) {
console.log('Should Fire')
}
})
}
}
}
它起作用了。我尝试过分配_this = this
并使用它来触发$emit,但没有任何区别。
为什么在回调中$emit事件不会触发?
this
代表Vue实例,所以在这种情况下使用箭头函数是可以的。话虽如此,我已经尝试过(并在此过程中分配了_self = this
),但没有任何区别。我尝试了各种方式来给它取别名,但都没有成功。 - evuthis
指的是Vue实例。 - evu