1.问题重现:先来看下这段代码

  watch: {
    posInfo: {
      handler: val => {
        if (val) {
          this.$nextTick(() => {
            this.subform.lgtd = val.lgtd;
            this.subform.lttd = val.lttd;
          });
        }
      },
      deep: true,
    },
  },

运行结果:Error "$nextTick" ........
输出一下this,发现是undefined

2.解决方案
箭头函数绑定了父级作用域的上下文,从而不会拿到Vue实例。所以在使用watch设置监听的时候,handler函数不应该使用箭头函数。

  watch: {
    posInfo: {
      handler: function (val) {
        if (val) {
          this.$nextTick(() => {
            this.subform.lgtd = val.lgtd;
            this.subform.lttd = val.lttd;
          });
        }
      },
      deep: true,
    },
  },

野望
18 声望4 粉丝

一个为了写出漂亮代码而努力的前端人