首先说一下,watch的基本用法:

watch: {
    indexList: {
      handler(newVal, oldVal) {
        if (this.indexList.length !== 0) {
          this.rightBtnText = '确定';
        }
      },
      deep: true
    }
}

// 通过 watch 监听indexList的变化,有变化就执行里面的方法,但是输出的的newVal, oldVal是一样的,很奇怪。

然后就百度,各种找解决方法 ,
 

解决办法如下:

加个compute用函数再返回一下这个值, 再用JSON.parse() 这个方法转一下,目的是破坏原型链:

computed:{
  listData(){
    return JSON.parse(this.list);
  }
},
watch: {
    listData: {
      handler(newVal, oldVal) {
        if (this.indexList.length !== 0) {
          this.rightBtnText = '确定';
        }
      },
      deep: true
    }
}

这样输出的 值 就不同了

Logo

前往低代码交流专区

更多推荐