2
不火在下面的代碼:
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函數被調用時,控制檯登錄「應該火」,但$發出事件不會被解僱。如果我將$ 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事件不會在回調中觸發?
你有沒有試過不使用箭頭功能?我剛開始使用vue,但我似乎記得在文檔中閱讀時,箭頭函數在某些地方使用時不能正確地綁定上下文。 – theWanderer4865
是的,如果我理解正確,當使用箭頭函數'this'代表Vue實例時,所以在這種情況下,箭頭函數沒問題。這就是說,我已經嘗試過了(並且在這個過程中也分配了'_self = this'),並沒有什麼區別。我嘗試了各種方法來混淆它,但沒有運氣。 – evu
我在這裏找到了相關的位:http://vuejs.org/v2/guide/instance.html#Properties-and-Methods看起來像箭頭函數沒有綁定到虛擬機實例。 – theWanderer4865