Vue中watch侦听器使用方法(普通监听与深度监听)

 本文将介绍在watch中对一个单独变量、对象中的某个属性、对象整体的监听的一般方法,以及深度监听的方法。

一、普通监听方式

1、监听一个变量的值变化

<!--页面-->
<template>
  <div>
   监听单个变量的变化:
   <input type="text" v-model="singleData">
  </div>
</template>

  <!--js-->
  data () {
    return {
      singleData:'我是初始值'
    }
  },
  watch:{
    singleData(newVlaue,oldValue){
      console.log('新值:'+newVlaue);
      console.log('旧值:'+oldValue);
    }
  }

 结果如下:

 

2、监听一个对象中的单个属性值的变化

<!--页面-->
<template>
  <div>
   监听obj中data1属性的变化:
   <input type="text" v-model="obj.data1">
   <br>
    监听obj中data2属性的变化:
   <input type="text" v-model="obj.data2">
  </div>
</template>

  <!--js-->
  data () {
    return {
      obj:{
        data1:'我是data1的初始值',
        data2:'我是data2的初始值'
      }
    }
  },
  watch:{
    'obj.data1':function(newvalue,oldvalue){
      console.log('data1变化前的值:'+oldvalue);
      console.log('data1变化后的值:'+newvalue);
    },
    'obj.data2':function(newvalue,oldvalue){
      console.log('data2变化前的值:'+oldvalue);
      console.log('data2变化后的值:'+newvalue);
    }
  },

结果如下:

二、深度监听 

 1、监听一个对象整体的变化(即监听对象所有属性值的变化)

<!--页面-->
<template>
  <div>
   监听obj中data1属性的变化:
   <input type="text" v-model="obj.data1">
   <br>
    监听obj中data2属性的变化:
   <input type="text" v-model="obj.data2">
  </div>
</template>

 <!--js-->
 data () {
    return {
      obj:{
        data1:'我是data1的初始值',
        data2:'我是data2的初始值'
      }
    }
  },
  watch:{
    obj:{
      handler:function(newvalue){
        console.log('新值:');
        console.log(newvalue);
      },
      deep:true//deep置为true表示:对象中任一属性值发生变化,都会触发handler中的方法
    }
  },

效果如下:

 2、以上三种方式监听,都只会在变量改变、对象的属性值变化的时候才会触发,即:初始化绑定的时候并不会触发。那么如何在初始化绑定的时候就触发监听事件,拿到初始值呢?

使用immediate,在页面初始化,属性值还没变化的时候就会触发handler方法

    obj:{
      handler:function(newvalue){
        console.log('新值:');
        console.log(newvalue);
      },
      deep:true,//对象中任一属性值变化都会触发handler方法
      immediate:true//初始化绑定时就会执行handler方法
    }

结果如下:


 有问题或意见,欢迎留言讨论!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值