VUE监听同时监听多个属性

同时监听多个属性

重点

  1. 通过计算属性将两个对象组合起来,并通过watch属性监听
  2. 只可以是两个完整的属性,不可以是子属性。例如,就不能是const {student.name,school} = this,此处不懂看代码
  3. 如果可能的话,尽量将牵扯的属性定义在一个对象中,直接监听该对象即可。例如直接监听student对象
<template>
···
</template>
<script>
export default{
	data:function(){
		return {
			student:{
				name:"小明",
				age:"24"
			},
			school:"光明中学"
		}
	},
	computed:{
		listenData(){
			const {student,school} = this
            return {student,school}
		},
		student(){
			//直接监听对象
		}
	},
	watch:{
		listenData(val){
			//do something
			//val中的值是组合的对象
		}
	}
}
</script>
多种监听方式:数组、对象、值
<template>
···
</template>
<script>
export default{
	data:function(){
		return {
			student:{
				name:"小明",
				age:"24"
			},
			school:"光明中学",
			classList:[{className:"高一",position:"一楼"},{className:"高二",position:"二楼"}]
		}
	},
	watch:{
		//监听对象
		//只有通过this.$set(student,"name",newValue)、this.$delete(student,"name",newValue)这样改变值才能触发
		student(){
			//dosomething
		},
		//监听数组一
		//只能监听到$set $delete函数改变的值
		classList(){
			//DO SOMETHING
		},
		//监听数组二
		//深度监视,即便不通过$set、$delete方法修改内部值也会触发,遍历数组,对性能消耗略大
		classList:{
			handler(){
				//DO SOMETHING
			},
			deep:true
		},
		//监听单个属性
		school(){
			//DO SOMETHING
		}
	}
}
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值