vue2侦听器watch的概念与使用

2023-11-19

1.什么是watch侦听器?

watch侦听器允许开发者监视数据的变化,是 vue 提供的一种用来观察和响应实例上数据变化的属性,属性发生变化,便会触发对应的监听函数。

侦听器 watch 实际上是 vue 实例中的一个对象属性。

语法格式如下:

const vm = new Vue ({

    el: '#app',
        
    data: { username : ' ' },

    watch: {

        //监听 username 值的变化
        //newVal 是变化之后的值,oldVal 是变化之前的值

        username( newVal, oldVal) {
        console.log( newVal, oldVal)
       }

    }
})

我们先做个实例:

 

每次输入一个数字后,控制台都会输出新的值与旧的值(当不定义oldVal 时就只会输出新值)。

2.注意事项:

1.侦听器被定义在 watch 节点下

2.侦听器本质是个函数

3.应用场景:

例如:注册时判断用户名是否被占用

 watch: {
            username(newVal) {
                if (newVal === '') return
                    //1.调用 jQuery 中的 Ajax 发起请求,判断 newVal 是否被占用
                $.get('http://www.escook.cn/api/finduser/' + newVal, function(result) {
                    console.log(result);
                })
            }
        }

4.侦听器的格式

1.方法格式的侦听器(缺点)

        1.无法在刚进入页面的时候自动触发。

        2.如果监听了一个对象,那就无法监听对象内部属性变化

 2.对象格式的侦听器(优点)

        1.在 watch 中可以先注册一个对象,在对象中注册 handler( newVal, oldVal ) 然后 通过 immediate: ture 选项,让侦听器自动触发。

5.定义对象格式的侦听器

代码如下:

const vm = new Vue({
        el: '#app',

        data: {
            username: ''
        },

        watch: {
            //定义对象格式的侦听器
            username: {
                //侦听器处理函数
                handler(newVal, oldVal) {
                    console.log(newVal, oldVal)
                },
                immediate: true
            }
        }
    })

注意:

1.如果不使用 immediate 选项,也不会立刻触发 

2.handler(newVal, oldVal) { }  也可以写成:handdler: function(newVal, oldVal) { }(前者为简写)

 

 6.深度监听(deep)

代码演示:(ps: v-bind注意使用info.username )

const vm = new Vue({
        el: '#app',

        data: {
            info: {
                username: '123'
            }
        },

        watch: {
            info: {
                //侦听器处理函数
                handler(newVal) {
                    console.log(newVal)
                },
                //使用deep开启深度监听,只要info对象中任何一个属性变化,都会触发‘对象的侦听器’
                deep: true
            }
        }
    })

效果如下:

 此时会输出一个对象里面会有新的username值,(缺点:此方法输出了整个对象)


ps: 此方法有简易写法(控制台会直接输出对象中的子属性,而不是整个对象)

watch: {
            'info.username' (newVal, oldVal) {
                console.log(newVal, oldVal)
            }
        }

-- 单引号内表示为一个表达式,对象里面的info.username变化了就会触发侦听器,可以设置多个侦听器,例如 ' info.time ' 、 ' info.gender ' 。

感谢阅读!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue2侦听器watch的概念与使用 的相关文章

随机推荐

  • 初识Node.js-安装

    简介 node js其实就是js的运行环境 对于js的运行环境来说 1 前端一般指浏览器 比如谷歌浏览器提供了V8 js解析器 2 服务器段指的是Node js 1 区分LTS版本和Current版本的不同 https nodejs org
  • 报错EL1007E: Property or field ‘xxxxx’ cannot be found on null原因竟是这

    报错EL1007E Property or field xxxxx cannot be found on null 是什么原因 有时我们发现Springboot项目前端的 thymleaf 会报这样的错 EL1007E Property o
  • 设计模式 -- 工厂模式(Factory Pattern)

    简单工厂模式 Simple Factory Pattern 根据传入的参数决定实例化哪个对象 优点 不直接在客户端创建具体产品的实例 降低了耦合性 缺点 违反了开闭原则 对扩展开放 对修改关闭 不容易形成高内聚松耦合结构 每当我们增加一种产
  • 10个程序员可以接私活的平台和一些建议!

    来源 http mrw so 5isQLi 什么样的私活不能接 1 没有第三方担保的个人对个人的尽量不要接 双方都没保障 出了问题很大的可能撕破脸皮不了了之 2 一上来就直接说给我开发一个什么软件 不说具体需求 没有需求文档的都不靠谱 这样
  • zotero如何用markdown记笔记

    1 去下载 Releases adam p markdown here GitHub 拖拽到 2 ctrl alt M对笔记进行渲染
  • 【华为OD机试真题2023B卷 JAVA&JS】字符串加密

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 字符串加密 时间限制 2秒 内存限制 65536K 语言限制 不限 题目描述 给你一串未加密的字符串str 通过对字符串的每一个字母进行改变来实现加密 加密方式是在每一个字母str i
  • Altium Designer覆铜后变为绿色是怎么回事?

    最近在做一个小板子 但是覆完铜后也把网络设置为GND 但是板子变绿色了 之前没有碰到过 也查过想过资料说是规则设置有问题 找了半天也没有发现规则相关问题 最后终于找到了解决方法 我把步骤写在下面 出现的问题如图所示 不知道你们有没有碰到这样
  • wx.config的时候总是报错63002是什么原因,配置时总是 invalid signature

    真的是真的是 我都弄的崩溃了差点 卡了三天的问题 各种留言各种找人还是不行 为了不再让各位体验那种感觉 zkhh666我的wx 首先说 我用的hbuilderx的uni做的 使用了推荐的插件jweixin module ps 我的问题是ur
  • PostgreSQL 关于Jsonb字段的处理详解(长期更)

    大家好 在开发的过程中由于业务复杂多变 普通的字符串格式满足不了业务开发需求 可能会用到jsonb字段去处理格外逻辑的业务 话不多说 1 一般jsonb存储的逻辑是 一个字段里面存储多条数据 以id为存储对象举例 该jsonb字段中存储的多
  • 参考文献格式GB/T 7714-2015的主要内容

    格式 主要责任者 题名 其他题名信息 文献类型标志 其他责任者 版本项 出版地 出版者 出版年 引文页码 引用日期 获取和访问路径 示例 1 余敏 出版集体研究 M 北京 中国书籍出版社 2001 179 193 2 昂温 G 昂温 P S
  • 八种点云聚类方法(一)— DBSCAN

    本文为博主原创文章 未经博主允许不得转载 本文为专栏 python三维点云从基础到深度学习 系列文章 地址为 https blog csdn net suiyingy article details 124017716 传统机器学习聚类的方
  • 步步学ACTIVEX网页控件开发

    本文将首先介绍如何使用Visual Studio开发一个简单的ActiveX控件 然后介绍ActiveX控件开发相关的基础知识 比如方法 属性和事件等 最后介绍如何利用这些知识 实现ActiveX控件和网页页面之间的 通信 MyActive
  • 【java面试常见2】

    文章目录 1 返回json串要加什么注解 2 RestController包含了什么注解 3 docker拉取镜像 4 springMVC的相关注解 5 vue框架和HTML有什么区别 为什么要使用vue 6 从Mysql中随机获取数据用什
  • untiy特殊文件夹

    1 Editor Editor文件夹可以在根目录下 也可以在子目录里 只要名子叫Editor就可以 比如目录 xxx xxx Editor 和 Editor 是一样的 无论多少个叫Editor的文件夹都可以 Editor下面放的所有资源文件
  • Windows挂载Linux网络共享文件夹

    Windows挂载Linux网络共享文件夹 创建Linux网络共享文件夹 用共享工具samba Ubuntu安装samba sudo apt install samba 配置Windows访问共享文件夹的账户 smbpasswd a riv
  • www.gvlib video.php,www.gvlib.com

    Domain Name gvlib com Registrar URL http www godaddy com Registrant Name Bin Song Registrant Organization Name Server NS
  • 13. linux系统监控

    系统监控 proc文件系统 proc文件系统是一种无存储的文件系统 当读其中的文件时 其内容动态 生成 当写文件时 文件所关联的写函数被调用 每个proc文件都关联着 字节特定的读写函数 因而它提供了另外的一种和内核通信的机制 内核 部件可
  • Dlib的编译

    有2种方法 1 新建空的工程 导入后编译 2 采用CMake自动生成工程文件后 再编译 官网上建议第1种方法 第1种方法好处就是编译后 在使用lib文件时 不需要将libjpeg libpng and zlib目录下的文件导入到工程文件中
  • 1.3>7?微软新模型“以小博大”战胜Llama2,网友:用Benchmark训练的吧?

    克雷西 发自 凹非寺量子位 公众号 QbitAI 一个参数量只有1 3B的大模型 为何引发了全网热议 原来虽然参数量不大 但效果已经超过了拥有7B参数的Llama2 这个 四两拨千斤 的模型 是来自微软最新的研究成果 核心在于只使用少量高质
  • vue2侦听器watch的概念与使用

    1 什么是watch侦听器 watch侦听器允许开发者监视数据的变化 是 vue 提供的一种用来观察和响应实例上数据变化的属性 属性发生变化 便会触发对应的监听函数 侦听器 watch 实际上是 vue 实例中的一个对象属性 语法格式如下