首先说一下,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
    }
}

这样输出的 值 就不同了

GitHub 加速计划 / vu / vue
207.54 K
33.66 K
下载
vuejs/vue: 是一个用于构建用户界面的 JavaScript 框架,具有简洁的语法和丰富的组件库,可以用于开发单页面应用程序和多页面应用程序。
最近提交(Master分支:2 个月前 )
73486cb5 * chore: fix link broken Signed-off-by: snoppy <michaleli@foxmail.com> * Update packages/template-compiler/README.md [skip ci] --------- Signed-off-by: snoppy <michaleli@foxmail.com> Co-authored-by: Eduardo San Martin Morote <posva@users.noreply.github.com> 4 个月前
e428d891 Updated Browser Compatibility reference. The previous currently returns HTTP 404. 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐