首页 > 其他分享 >监听器watch

监听器watch

时间:2023-03-20 09:34:02浏览次数:39  
标签:console log 侦听器 watch newVal oldVal 监听器

监听器

侦听器:用于监听数据变化,然后做事

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

 watch_name(newVal,oldVal){} 
  1. 方法格式的侦听器

​ 缺点1:无法在刚进入页面的时候,自动触发!!!

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

  1. 对象格式的侦听器

​ 好处1:可以通过 *immediate* 选项,让侦听器自动触发!!!

​ 好处2:可以通过 *deep* 选项,让侦听器深度监听对象中每个属性的变化!!!

方法格式的侦听器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>watch!</title>
</head>

<body>
    <!-- --------------------------------------这里是方法格式的侦听器 ----------------------------------->
    <div id="app">
        <input type="text" v-model="username">
        <input type="text" v-model="username1">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script src="./lib/jquery-v3.6.0.js"></script>
    <script>
        var i = 0;
        const vm = new Vue({
            el: '#app',
            data: {
                username: 'admin',
                shownow: 'shownow',
                username1:'shownow'
            },

            watch: {
                username(newVal, oldVal) {
                    console.log("监听到了变化", oldVal, newVal);
                    console.log("原本是" + oldVal);
                    console.log("现在是" + newVal);
                },
                // 监听器的作用:监视username1,用 jQuery 中的 Ajax 发起请求,判断 newVal 是否被占用!!!
                username1(newVal) {
                    if (newVal === '') return
                    $.get('https://www.escook.cn/api/finduser/' + newVal, function (result) {
                        console.log(result)
                    })
                }
            }
        })
    </script>

</body>

</html>

对象格式的侦听器

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>侦听器</title>
</head>

<body>
  <!-- --------------------------------------这里是对象格式的侦听器 ----------------------------------->
  <div id="app2">
    <!-- 对象格式:单个属性 -->
    <input type="text" v-model="shownow">
    <!-- 对象格式:多个属性 -->
    <input type="text" v-model="info.username">
    <input type="text" v-model="info.address.city">
  </div>
  <script src="./lib/vue-2.6.12.js"></script>
  <script src="./lib/jquery-v3.6.0.js"></script>
  <script>
    var i = 0;
    const vm1 = new Vue({
      el: '#app2',
      data: {
        username3: '三号用户',
        info: {
          username: 'admin是属性之一',
          address: {
            city: '北京是属性之二'
          }
        },
        watch: {
          shownow: {
            // 侦听器的处理函数
            handler(oldVal, newVal) {
              if (i == 0) {
                console.log("自动触发:第一次对象格式的侦听处理");
                console.log(i);
              } else {
                console.log("这是第" + i + "次对象格式的侦听处理", newVal, oldVal)
                console.log(i);
              }
              i++;
            },
            // immediate 的作用是:控制侦听器是否自动触发一次,打开网页时就能看到. 默认值是 false
            immediate: true
          },


          info: {
            handler(newVal) {
              console.log("开启深度监听任何一个属性变化了都会触发", newVal)
            },
            // 开启深度监听
            deep: true
          }
          // 如果要侦听的是对象的子属性的变化,则必须包裹一层单引号
          // 'info.username'(newVal) {
          //   console.log(newVal)
          // }

        }
      }
    })

  </script>
</body>

</html>

标签:console,log,侦听器,watch,newVal,oldVal,监听器
From: https://www.cnblogs.com/tupo/p/17235215.html

相关文章

  • 网卡 超时处理watchdog
    超时处理dev_watchdog当watchdog发现网卡处于up状态并且发送队列处于停止时间大于5秒时将触发看门狗机制,dev_watchdog先找到停止的队列,然后调用igb_tx_timeout整个网卡队......
  • filter过滤器、事务管理、listener监听器相关知识
    资料来源于:B站尚硅谷JavaWeb教程(全新技术栈,全程实战),本人才疏学浅,记录笔记以供日后回顾由于是多个视频内容混合在一起,因此只放了第一个链接视频链接知识点1.......
  • how to disable watchdog
    Featurephone 的productionrelease版本上存在(1)死机无法抓取得memorydump或是(2)用JTAG分析问题时watchdogtimeout了, 可以关闭watchdog去debug问题,关闭方法如下:11A......
  • 9_监听器概念引入
    ​  什么是监听器?类似于前端的事件绑定,java中的监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对......
  • 9_监听器概念引入
    ​  什么是监听器?类似于前端的事件绑定,java中的监听器用于监听web应用中某些对象、信息的创建、销毁、增加,修改,删除等动作的发生,然后作出相应的响应处理。当范围对......
  • 11_Session域监听器
    ​ Session域共有四个监听器接口,分别是HttpSessionListenerHttpSessionAttributeListenerHttpSessionBindingListenerHttpSessionActivationListener接下来我们就......
  • 11_Session域监听器
    ​ Session域共有四个监听器接口,分别是HttpSessionListenerHttpSessionAttributeListenerHttpSessionBindingListenerHttpSessionActivationListener接下来我们就......
  • Filter过滤和Listener监听器
    过滤器Filter简介Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些......
  • Filter过滤和Listener监听器
    过滤器Filter简介Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些......
  • Spring Boot | 事件监听器异步处理事件,实现代码解耦
    一、简介SpringBoot事件监听器(EventListener)用于在应用程序的生命周期中,监听SpringBoot应用程序中各种事件的发生,以便在事件发生时执行某些特定的操作。二、集成步骤1......