IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue 侦听器 -> 正文阅读

[JavaScript知识库]Vue 侦听器

目录

watch 侦听器

判断用户名是否被占用

侦听器的格式

对象格式的侦听器

immediate 选项

deep 选项

侦听对象单个属性的变化


watch 侦听器

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

<body>
    <div id="box">
        <input type="text" v-model="username">
    </div>
    <script>
        const vm = new Vue({
            el: "#box",
            data: {
                username: '',
            },
            watch: {
                // 监听 username 值的变化
                // newVal 是 "变化后的新值", oldVal 是 "变化之前的旧值"
                // 要监听哪个数值的变化,就把该数值名作为方法名
                // 新值在前,旧值在后
                username(newVal, oldVal) {
                    console.log(newVal, oldVal);
                }
            }
        });
    </script>
</body>

判断用户名是否被占用

    <script>
        const vm = new Vue({
            el: "#box",
            data: {
                username: '',
            },
            watch: {
                username(newVal) {
                    if (newVal == '') return;
                    // 调用 jQuery 中的 Ajax 发起请求,判断 newVal 是否被占用
                    $.get('https://www.escook.cn/api/finduser/' + newVal, function(result) {
                        console.log(result);
                    });
                }
            }
        });
    </script>

侦听器的格式

方法格式的侦听器

  • 缺点:无法再刚进入页面的时候自动触发
  • 如果侦听的是对象,那么对象中属性的变化并不会被侦听器接收到

对象格式的侦听器

  • 可以通过 immediate 选项,让侦听器自动触发
  • 可以通过 deep 选项,让侦听器深度侦听对象中每个属性的变化

对象格式的侦听器

immediate 选项

  • 默认值为 false,第一次进入页面不触发侦听器
  • 当选项值设为 true 时,第一次进入页面就会触发侦听器
    <script>
        const vm = new Vue({
            el: "#box",
            data: {
                username: 'admin',
            },
            watch: {
                // 定义对象格式的侦听器
                username: {
                    // 侦听器的处理函数
                    // 其中 handler 为属性
                    // 只要侦听到了 username 值的变化,就会自动触发 handler 函数
                    handler(newVal, oldVal) {
                        console.log(newVal, oldVal);
                    },
                    // immediate 默认值为 false,第一次进入页面并不会触发侦听器
                    // 选项值设为 true 时,第一次进入页面就会触发一次侦听器
                    immediate: false,
                }
            }
        });
    </script>

deep 选项

  • 侦听的是对象,但对象中每个属性的变化都会被 "对象侦听器" 所接收到
    <script>
        const vm = new Vue({
            el: "#box",
            data: {
                info: {
                    username: 'admin',
                    address: {
                        city: '北京',
                    },
                },
            },
            watch: {
                // 如果侦听的是对象,那么对象中属性的变化并不会被侦听器所接收到
                info: {
                    handler(newVal) {
                        console.log(newVal);
                    },
                    // 开启深度监听,对象中任何一个属性的变化都会被 "对象侦听器" 接收到
                    deep: true,
                }
            }
        });
    </script>

侦听对象单个属性的变化

  • 侦听对象单个属性的变化
    <script>
        const vm = new Vue({
            el: "#box",
            data: {
                info: {
                    username: 'admin',
                    address: {
                        city: '北京',
                    },
                },
            },
            watch: {
                // 如果要侦听对象单个子属性的变化,则必须包裹一层单引号
                'info.username' (newVal) {
                    console.log(newVal);
                }
            }
        });
    </script>
  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:25:42  更:2021-08-15 15:27:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 17:30:51-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计