В следующем коде:
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'
});
}
})
}
}
}
Когда функция вызывается удалить, консоль журналы «Если огонь», но $ испускают событие не уволят. Если я перемещаю $ 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 выглядит так, как функция стрелки не является обязательной для экземпляра vm. – theWanderer4865