vue ---- 监听器

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

 const vm = new Vue({
     el: '#app',
     data: {
         username: ''
     },
     //监听器需要定义在watch节点下
     watch: {
		//监听 username 值的变化,要监听哪个值,就做为方法名
		username(newVal,oldVal){
			console.log(newVal,oldVal)
		}
	}

案例
应用场景: 登录的用户校验

数据绑定使用 v-model
方法格式的监听器使用
对象格式监听器使用
发送Ajax请求

<body>
    <div id="app">
        <input type="text" v-model="username">
    </div>
    <script src="./lib/vue-2.6.12.js"></script>
    <script src="./lib/jquery-v3.6.0.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                username: 'admin'
            },
            watch: {
                /*username(newVal,oldVal){
                    console.log("新值: " + newVal, "旧值: " + oldVal)
                }*/
				//建议定义成方法
                /*username(newVal){
                    if(newVal === '') return;

                    $.get('https://www.escook.cn/api/finduser/' + newVal,function(result){
                        console.log(result);
                    })
                }*/

                username: {
                    handler(newVal) {
                    	//判空
                        if (newVal === '') return;

                        $.get('https://www.escook.cn/api/finduser/' + newVal, function(result) {
                            console.log(result);
                        })
                    },
                    //默认为false,不自动触发
                    immediate: true
                }
            }
        });
    </script>
</body>

案例
如果监听的是一个对象,对象中的属性的变化不会被监听到,处理方法如下

<body>
    <div id="app">
        <input type="text" v-model="info.username">
    </div>



    <script src="./lib/vue-2.6.12.js"></script>
    <script>
        const vm = new Vue({
            el: "#app",
            data: {
                info: {
                    username: ''
                }
            },
            watch: {
            	//使用对象格式定义方式,打开deep的值,默认为false
                // info: {
                //     handler(newVal) {
                //         console.log(newVal);
                //     },
                //     deep: true
                // }
				
				//单独监听对象中的某个属性的变化
                'info.username': {
                    handler(newVal){
                        console.log(newVal);
                    }
                }
            }
        });
    </script>
</body>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

悠闲的线程池

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值