VUE学习笔记--侦听器

news/2024/7/24 4:48:47 标签: vue.js, javascript, 学习, css, 前端

文章目录

    • watch侦听器
    • 侦听器注意点
    • 对象格式的侦听器
    • 深度侦听

watch侦听器

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

javascript">        const v = new Vue({
            el: "#app",
            data: {
                username: ''
            },
            watch: {
                //监听username的变化
                // newVal变化之后的值,oldVal变化之前的值
                username( newVal, oldVal ) {
                    console.log(newVal, oldVal);
                    
                }
            }
        })

示例:

javascript"><!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
    <script>
        const v = new Vue({
            el: "#app",
            data: {
                username: ''
            },
            watch: {
                //监听username的变化
                // newVal变化之后的值,oldVal变化之前的值
                username( newVal, oldVal ) {
                    console.log(newVal, oldVal);
                    
                }
            }
        })
    </script>
</body>
</html>

请添加图片描述

侦听器注意点

1.所有的侦听器要定义在watch节点下
2.侦听器本质为函数,要监视哪个数据的变化就把数据名作为方法名即可
3.侦听器的参数,新值在前,旧值在后

对象格式的侦听器

对象格式的侦听器可以通过immediate让侦听器自动触发

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js">javascript"></script>
    <script>javascript">
        const v = new Vue({
            el: "#app",
            data: {
                username: '1'
            },
            watch: {
                // 对象格式的侦听器
                username: {
                    // 侦听器的处理函数
                    handler(newVal, oldVal) {
                        console.log(newVal, oldVal);
                    },
                    // 默认值为false,要一开始就触发,值填true
                    immediate: true
                }
            }
        })
    </script>
</body>
</html>

请添加图片描述

深度侦听

侦听的是一个对象,对象中的属性发生变化不会触发侦听器
解决:
1.开启深度监听,只要对象中的属性发生变化就会触发侦听器

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js">javascript"></script>
    <script>javascript">
        const v = new Vue({
            el: "#app",
            data: {
                // 用户信息对象
                info: {
                    username: '1'
                }
            },
            watch: {
                // 对象格式的侦听器
                info: {
                    // 侦听器的处理函数
                    handler(newVal) {
                        console.log(newVal);
                    },
                    // 开启深度侦听
                    deep: true
                }
            }
        })
    </script>
</body>
</html>

请添加图片描述

2.侦听对象的属性

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>
    <script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js">javascript"></script>
    <script>javascript">
        const v = new Vue({
            el: "#app",
            data: {
                // 用户信息对象
                info: {
                    username: '1'
                }
            },
            watch: {
                //侦听对象的属性
                //侦听对象的属性,必须包裹单引号
                'info.username'(newVal, oldVal) {
                    console.log(newVal, oldVal);
                    
                }                
            }
        })
    </script>
</body>
</html>

请添加图片描述


http://www.niftyadmin.cn/n/563934.html

相关文章

云锁卸载

Wdcp后台卸载云锁&#xff0c;或者卸载云锁再次安装&#xff0c;会出现以下两种情况报错: 错&#xff0c;是因为之前已经在wdcp面板安装过云锁&#xff0c;再次手动安装提示已经安装&#xff1b; 解决方法&#xff1a; 1.如果已经安装云锁&#xff0c;并且云锁的主进程都在&a…

洛谷刷题题解笔记----UVA11292 Dragon of Loowater

目录题目链接解题思路解题代码题目链接 题目链接 解题思路 每组输入后对龙脖子的直径和骑士的能力值进行从小到大排序&#xff0c;外加一个判断数组判断该骑士是否被雇佣 然后遍历每个龙&#xff0c;看没有雇佣过的骑士是否可以杀死&#xff0c;因为已经从小到大排序&#x…

深入了解直播

视频直播的流程可以分为如下几步&#xff1a; 采集 —>处理—>编码和封装—>推流到服务器—>服务器流分发—>播放器流播放 1.采集 采集是整个视频推流过程中的第一个环节&#xff0c;它从系统的采集设备中获取原始视频数据&#xff0c;将其输出到下一个环节。…

JavaScript学习笔记----面向对象编程

目录两大编程思想编程思想概念面向对象编程的特性面向对象与面向过程对比面向对象的思维特点对象类创建类类的构造函数 constructor类添加方法类的继承两大编程思想 面向过程 面向对象 编程思想概念 1.面向过程 分析解决问题所需的步骤&#xff0c;然后用函数把这些步骤一步…

【微信小程序开发】js变量名称写活

function create_variable(num){ var name "test_"num; //生成函数名 window[name] 100; window[name] 200; //注意看中括号里的内容加引号和不加引号的区别 } create_variable(2); alert(test_2); // 100; alert(name); //200;

蓝桥杯历年真题题解----2020年

文章目录单词分析题目链接成绩统计题目链接回文日期题目链接门牌制作题目链接单词分析 题目链接 题目描述 小蓝正在学习一门神奇的语言&#xff0c;这门语言中的单词都是由小写英文字母组 成&#xff0c;有些单词很长&#xff0c;远远超过正常英文单词的长度。小蓝学了很长时…

洛谷刷题题解笔记----UVA11729 Commando War

文章目录UVA11729 Commando War题目链接题意翻译解题思路UVA11729 Commando War 题目链接 题意翻译 突击战 你有n个部下&#xff0c;每个部下需要完成一项任务。第i个部下需要你花Bj分钟交代任务&#xff0c;然后他就会立刻独立地、无间断地执行Ji分钟后完成任务。你需要选择…