在 VueJS 中检索计算的 属性

retrieve a computed property in 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);
    },
}

其中 championshipschampionship_id 是全局数据。

console.log(this.championship); returns undefined

现在,我简化,然后写:

computed: {
    championship(){
        return 2;
    },
}

console.log(this.championship);继续返回undefined

我的代码有什么问题???

this 不再在 drop 事件函数中引用 Vue 实例。尝试在 $nextTick 调用之前在 mounted 函数中设置对 this 的引用:

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)
        );
    })
}