【Vue】2-6、侦听器

watch 侦听器

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

语法格式如下:

javascript 复制代码
const vm = new Vuew({
	el: '#app',
	data: { username: ''},
	watch: {
		username(newVal,oldVal){
			console.log(newVal,oldVal);
		}
	}
})
html 复制代码
<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <!-- 导入 Vue 的库文件 -->
    <script src="./lib/vue.js"></script>
    <!-- Jquery -->
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <!-- 创建 Vue 的实例对象 -->
    <script>
        /**
        const vm = new Vue({
            // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
            el: '#app',
            // data 对象就是要渲染到页面上的数据
            data:{
                username: ''
            },
            watch: {
                username(newVal){
                    if(newVal != ''){
                        $.get('https://www.escook.cn/api/finduser/' + newVal,function(res){
                            console.log(res)
                        })
                    }
                }
            }
        })
        
       const vm = new Vue({
            // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
            el: '#app',
            // data 对象就是要渲染到页面上的数据
            data:{
                username: 'Jack'
            },
            watch: {
                username: {
                    // 侦听器的处理函数
                    handler(newVal){ 
                        if(newVal != ''){
                            $.get('https://www.escook.cn/api/finduser/' + newVal,function(res){
                                console.log(res)
                            })
                        }
                    },
                    immediate: true
                }
            }
        })
        */
       const vm = new Vue({
            // el 固定写法,表示当前 vm 实例要控制页面上的哪个区域,接收的值是一个选择器
            el: '#app',
            // data 对象就是要渲染到页面上的数据
            data:{
                info:{
                    username: 'Jack'
                }
            },
            watch: {
                /**
                info:{
                    handler(newVal){
                        console.log(newVal);
                    },
                    deep: true
                }
                */
                // 侦听对象属性的变化
                'info.username'(newVal){
                    console.log(newVal)
                }
            }
        })
    </script>
</body>

注意:

以上形式是把侦听器定义为一个函数,所以在页面刚进来的时候是不会调用的,只有在侦听器侦听的对象数据发生变化了才会调用侦听器,并执行相应操作。

而且通过此方法定义的侦听器无法侦听对象的属性的变化。

通过 immediate 选项让页面刚加载时便调用侦听器。

通过 deep 选项让侦听器深度侦听对象中每个属性的变化。

一 叶 知 秋,奥 妙 玄 心

相关推荐
GISer_Jing22 分钟前
两种AI交互方式深度解析——浏览器书签&插件
前端·人工智能·ai·prompt
哈__29 分钟前
ReactNative项目OpenHarmony三方库集成实战:react-native-device-info
javascript·react native·react.js
前端布鲁伊32 分钟前
零代码上线一个图片处理网站,我是如何使唤AI干活的?
前端·ai编程
庄小焱33 分钟前
React——React基础语法(2)
前端·javascript·react.js
终端鹿35 分钟前
Vue3 核心 API 深度解析:ref / reactive / computed / watch
前端·javascript·vue.js
console.log('npc')42 分钟前
partial在react接口定义中是什么意思
前端·javascript·typescript
SuperEugene43 分钟前
前端 utils 工具函数规范:拆分 / 命名 / 复用全指南,避开全局污染等高频坑|编码语法规范篇
开发语言·前端·javascript
C澒1 小时前
微前端容器标准化 —— 公共能力篇:通用请求
前端·架构
llxxyy卢1 小时前
web部分中等题目
android·前端