Получить вычисленное свойство в VueJS
Я использую Vue-Dragula, чтобы драпировать и опускать. Когда я бросаю, это вызывает метод:
mounted: function () {
this.$nextTick(function () {
Vue.vueDragula.eventBus.$on(
'drop',
function (args) {
console.log(this.championship);
}
);
}
Сейчас this.championship
является вычисляемым свойством:
computed: {
championship(){
return this.championships.find((elem) => elem.championship == this.championship_id);
},
}
где championships
а также championship_id
глобальные данные.
а также console.log(this.championship);
возвращается undefined
Теперь я упрощаю и пишу:
computed: {
championship(){
return 2;
},
}
а также console.log(this.championship);
продолжай возвращаться undefined
Что не так с моим кодом???
2 ответа
Решение
this
больше не ссылается на экземпляр Vue в функции события drop. Попробуйте установить ссылку на this
в mounted
функционировать до $nextTick
вызов:
mounted: function () {
let vm = this;
this.$nextTick(function () {
Vue.vueDragula.eventBus.$on(
'drop',
function (args) {
console.log(vm.championship);
}
);
}
}
Используйте функции стрелок, чтобы ваш this
будет фактическим экземпляром Vue:
mounted () {
this.$nextTick(() => {
Vue.vueDragula.eventBus.$on(
'drop',
args => console.log(this.championship)
);
})
}