vue基础知识(七)——侦听器

本文探讨了Vue中的侦听器(watch)功能,重点在于其应用场景——在数据变化时执行异步或资源密集型操作。通过示例说明了如何使用侦听器,与计算属性(computed)的区别,以及在特定情况下,如输入验证时,只有使用侦听器才能实现预期功能。
摘要由CSDN通过智能技术生成

侦听器

  1. 侦听器的应用场景

    数据变化时执行异步或开销较大的操作

  2. 侦听器的用法
    在这里插入图片描述
    侦听器watch和计算属性computed有点像,在下述中使用侦听器,当改变input框中的值时,div里面显示的值才会发生相应变化。注意:watch中方法名称要和data中属性名称一致!

template中:
           <input type="text" v-model='firstName'>
           <input type="text" v-model='lastName'>
           <div>{{fullName}}</div>

script中:
var vm =new Vue({
			el:"#app",
			data:{
				firstName: 'Zhou',
				lastName: 'LiYing',
				fullName: 'Zhou LiYing'
			},
			watch: {
			    // 定义函数时函数名要和data中的数据名一致
				firstName: function(val){
					this.fullName = val + '' + this.lastName
				},
				lastName: function(val){
					this.fullName = this.firstName + '' + val
				}
			}
		})

下述中使用计算属性,效果和使用侦听器效果一样,但是在这个案例中计算属性computed还要更简单一点。

template中:
           <input type="text" v-model='firstName'>
           <input type="text" v-model='lastName'>
           <div>{{totalName}}</div>

script中:
var vm =new Vue({
			el:"#app",
			data:{
				firstName: 'Zhou',
				lastName: 'LiYing',
			},
			computed: {
				totalName: function(){
					return this.firstName + ' ' + this.lastName
				}
			}
		})
  1. 侦听器的特定用法
    在有的特定场景下使用计算属性computed是解决不了问题的,只有用侦听器watch才行。
    比如当你输入一个用户名,失去焦点时要对用户名进行监听是否已经存在并给出相应的提示。
<!DOCTYPE html>
<html>
<head>
	<title>测试vue</title>
</head>
<body>
	<div id="app">
		<div>
			<input type="text" v-model.lazy='uName'>
			<span>{{tips}}</span>
		</div>
		<!-- 
			侦听器
			1.采用侦听器监听用户名的变化
			2.调用后台接口进行验证
			3.根据验证的结果调整提示信息
		 -->	
	</div>
	<script src="https://cdn.jsdelivr.net/npm/vue"></script>
	<script type="text/javascript">
		var vm =new Vue({
			el:"#app",
			data:{
				uName: '',
				tips: ''
			},
			methods: {
				checkName: function(uname){
					// 调用接口,但是可以使用定时任务的方式模拟接口调用
					var that = this
					setTimeout(function(){
						// 模拟接口调用
						if(uname == 'admin') {
							that.tips = '用户名已经存在,请更换'
						}else{
							that.tips = '用户名可以使用'
						}
					},1000)
				}

			},
			watch: {
				uName: function(val){
					// 调用后台接口验证用户名的合法性
					this.checkName(val)
					// 修改提示信息
					this.tips = '正在验证...'
				}
			}
		})
	</script>
</body>
</html>

最终效果:
1
2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值