vue侦听器

侦听器

可以侦听data/computed属性值改变

浅侦听

语法

//浅侦听  侦听的是基本数据类型
watch:{
  '被侦听的属性名'(newval,oldval){
  
  }
}
深度侦听

语法

//侦听复杂数据类型  深度侦听
watch:{
  // 侦听复杂数据类型
     '被侦听的属性名':{
        handler(newval,oldval){
           console.log(newval,oldval,"深度")
        },
        deep:true,  //深度监听 (对象里层的值改变)
        //  immediate:true, //立即监听  (网页打开handler执行一次
      }
}
   <div id="app">
    姓名:<input type="text" v-model="name"/>
<hr>
    {{obj.name}}--{{obj.age}}

    <button @click="++obj.age">年龄自增</button>
   </div>
new Vue({
  el:"#app",
  data:{
   //  name:"",
    obj:{
      name:'[zs]',
      age:9
    }
  },
 //  侦听name值的改变
 watch:{
   // newval 当前最新值
   // oldval 改变前的值
   name(newval,oldval){
     console.log(newval,1)
     console.log(oldval,2)
   },
   // 侦听复杂数据类型
   obj:{
     handler(newv,oldv){
        console.log(newv,oldv,"深度");
     },
     deep:true,  //深度监听 (对象里层的值改变)
     // immediate:true, //立即监听  (网页打开,handler执行一次
   },
   'obj.age'(newv,oldv){
     console.log(newv,oldv,'obj.age');
     deep:true
   }
 }
})

中间的

// 侦听复杂数据类型
   obj:{
     handler(newv,oldv){
        console.log(newv,oldv,"深度");
     },
     deep:true,  //深度监听 (对象里层的值改变)
     // immediate:true, //立即监听  (网页打开,handler执行一次
   },

部分,侦听到之后,输出的newvoldv指向的都是新数据对象,得不到旧数据,现在还不理解为什么,先给个传送门

数组(一维、多维)的变化不需要通过深度监听,对象数组中对象的属性变化则需要deep深度监听。
对象内某个属性产生变化,直接监听该对象是监测不到变化的,只能监听该对象的属性变化。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值