Vue对象属性值发生变化的监听三种方法

监听info对象中的a属性值变化:

<script>
        const vm = Vue({
          data() {
            return {
              b: true,
              info:{
              		a: 1,
              		b:2,
              		c: 3
              }
              
            }
          }
</srcipt>

第一种方式:使用deep
为了发现对象内部值的变化,可以在选项参数中指定 deep: true。注意监听数组的变更不需要这么做。
只要info中的属性发生变化(可被监测到的),便会执行handler函数;
如果想监测具体的属性变化,如a变化时,才执行handler函数,则可以利用计算属性computed做中间层。

watch:{
    info:{
        handler(newVal){
            console.log(newVal);
        },
        deep: true
    }
}

第二种方式:watch结合computed,computed返回对象的的该属性,对computed的操作函数进行watch监听。

computed:{
    //该计算属性返回要监视的对象属性值
    infoa(){
        return this.info.a;
    }
},
watch:{
    //开始监听返回该对象属性值计算属性
    infoa: function(newVal, oldVal){
        console.log(newVal, oldVal);
    }
}

第三种方式:

watch:{
    'info.a'(newVal, oldVal){
        if(newVal != oldVal && newVal != ""){
            this.vDisable = false;
         	var appName = newVal.split("-")[0]
         	this.getVersionData(appName)
        }
    }
}

 

原文链接:https://doubaoyuanma.com/blog/vue%e5%af%b9%e8%b1%a1%e5%b1%9e%e6%80%a7%e5%80%bc%e5%8f%91%e7%94%9f%e5%8f%98%e5%8c%96%e7%9a%84%e7%9b%91%e5%90%ac%e4%b8%89%e7%a7%8d%e6%96%b9%e6%b3%95,转载请注明出处。

0

评论0

显示验证码
没有账号? 注册  忘记密码?