cordova 类星体框架:无法识别监视器内的方法

5lwkijsr  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(139)

我尝试在类框架应用程序中使用观察器,但观察器中的方法未被识别为方法。

data () {
   return {
     education: { degree:'test' },
     type: 2
   }
 },
 watch: {
   type: (newType) => {
     if (newType === 1) {
       this.removeDegree()
     }
   }
 },
 methods: {
   removeDegree () {
     this.education.degree = ''
   }
 }

我希望调用removeDegree,但是,抛出警告和错误,表明removeDegree不是函数。
参考:VueJS:观察者

**解决方案:**使用@docnoe建议的速记es6语法

watch: {
  type (newType) {
    if (newType === 1) {
      this.removeDegree()
    }
  }
},
...
58wvjzkj

58wvjzkj1#

@Belmin Bedak已经在评论中回答了:在“type”上与手表一起使用的箭头函数会中断对“this”的引用。请改用普通函数。
固定代码:

new Vue({
  el: "#app",
  data() {
    return {
      education: { degree: "test" },
      type: 2,
      type2: 2,
      type3: 3
    };
  },
  watch: {
    // shorthand es6 syntax
    type(newType) {
      if (newType === 1) {
        this.removeDegree();
      }
    },
    // this is also valid
    type2: function(newType) {
      if (newType === 1) {
        this.removeDegree();
      }
    },
    // or using a handler
    type3: {
      handler(newType) {
        if (newType === 1) {
          this.removeDegree();
        }
      },
      // other watch options
      immediate: true
    }
  },
  methods: {
    removeDegree() {
      this.education.degree = "";
    }
  }
});

Codepen

相关问题