vue侦听器 watch

207 阅读1分钟

watch侦听器概述

watch:侦听器,监视数据变化,从而针对数据的变化做特定的操作

侦听器本质上是一个函数,要监听哪个数据的变化,就把数据名作为方法名即可

侦听器的格式:

  • 方法格式的侦听器

    • 缺点一:无法在刚进入页面的时候自动触发
    • 缺点二:如果侦听的是一个对象,对象里面的属性发生变化时,不会触发侦听器
    • 优点:写法简单,不需要自动触发和深度监听,可使用方法格式的侦听器
  • 对象格式的侦听器

    • 优点一:可通过immediate选项,让侦听器在进入页面时自动触发
    • 优点二:可通过deep选项,让侦听器深度监听对象中的每个属性的变化

示例:

方法格式的侦听器

// 方法格式的侦听器
// 语法  小括号内一个形参:变化后的值;两个形参:第一个是变化后的值,第二个是变化之前的值
watch:{
    // 监听username值的变化
    // newVal:变化后的值 oldVal:变化之前的值
    username(newVal,oldVal){
      console.log(newVal, oldVal);
    }
},

对象格式的侦听器

info:{
    username:'admin',
    password:123112
}

// 对象格式的侦听器
watch:{
    info:{
      // 侦听器处理函数
      handler(newVal,oldVal){
        console.log(newVal, oldVal);
      },
      // 在进入页面时触发一次,默认false不触发
      immediate:true// 开启深度监听,监听的对象中的任何一个属性变化了,都会触发侦听器
      deep:true
    }
}

如果只想侦听对象中的某个属性

info:{
    username:'admin',
    password:123112
}
// 如果只想侦听对象中的某个属性
'info.username'(newVal){
    console.log(newVal)
}