【侦听器】

1.watch 侦听器:允许开发者监视数据的变化,从而针对数据的变化做特定的操作

2.格式:3.对应变化:

4.注意:

        所有的侦听器,都应该被定义到 watch 节点下

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

        新值在前,旧值在后

5.应用:

//想要监听谁的变化,就把那个函数作为函数名即可。

 username(newVal) {

          if (newVal === '') return

          // 1. 调用 jQuery 中的 Ajax 发起请求,判断 newVal 是否被占用!!!

          $.get('https://www.escook.cn/api/finduser/' + newVal, function (result) {

            console.log(result)

          })

        }

6.改进:immidiate选项

侦听器的格式:

1)对象格式的侦听器:

        优点1:通过immidiate选项,让侦听器自动触发

        优点2:可以通过deep选项让监听器深度监听对象中每个属性的变化

        下面的例子在deep监听对象的基础上,会直接监听到对象属性的变化

              data: {

        // 用户的信息对象

        info: {

          username: 'admin',

          address: {

            city: '北京'

          }

        }

      },

      // 所有的侦听器,都应该被定义到 watch 节点下

      watch: {

        /* info: {

          handler(newVal) {

            console.log(newVal)

          },

          // 开启深度监听,只要对象中任何一个属性变化了,都会触发“对象的侦听器”

          deep: true

        } */

        // 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号

        'info.username'(newVal) {

          console.log(newVal)

        }

      }

    })

2)方法格式的侦听器:

        缺点1:无法在进入网页时自动触发侦听器(一般用方法格式,按需求选择对象格式)

        缺点2:如果监听的是一个对象,如果对象中的属性发生变化,不会触发侦听器。

     例子:

        <input type="text" v-model="info.username">     

        data: {

        // 用户的信息对象

        info: { username: 'admin'}

    3)对象格式的侦听器:

watch: {

        // 定义对象格式的侦听器(username)

        username: {

          // handle是侦听器的处理函数

          handler(newVal, oldVal) {

            console.log(newVal, oldVal)

          },

          // immediate 选项的默认值是 false,如果是true就会自动触发

          // immediate 的作用是:控制侦听器是否自动触发一次!

          immediate: true

        }

      }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值