Vue入门教程--vue的监听属性watch详解(article:15)

Vue.js 初步入门


watch:Vue.js 监听属性 watch,我们可以通过 watch 来响应数据的变化。

使用简介

watch属性,可以监听data属性域中的数据变化,并可以事实采用函数相应变化。
首先在data域中定义一个msg属性,用来被监听。

data:{
	msg:'hello vue'
}

接着,我们将data中的数据用v-model实时绑定到自定义的文本框中。

<input type="text" placeholder="请输入任意字符" v-model="msg"/>

最后,用watch监听器将msg属性关联起来。

vm.$watch("msg",function(nval,oval){
	alert(`原数${oval}变成了${nval}`);
});
//vm是Vue实例的引用
//回调函数第一个属性nval(now value)表示改变过msg后最终的值
//回调函数第二个属性oval(old value)表示改变msg前的值

最终效果如图所示:
在这里插入图片描述

属性详解

我们写一个km/hm/s相互换算的小应用。
首先要在data属性中定义两个速度的变量。

data:{
	kPerSecond:0,
	mPerSecond:0
}

定义属性watch,用来监听多个属性:

			watch:{
				mPerSecond:function(){
					this.kPerSecond = this.mPerSecond*3.6;
				},
				kPerSecond:function(){
					this.mPerSecond = this.kPerSecond/3.6;
				}
			}

简而言之,只要mPerSecond发生改变,kPerSecond也会相应的发生改变,
反过来也同理。
在这里插入图片描述
可以这样简单的理解,外部调用的vm.$watch,只能观察一个值发生的变化,而内部定义的watch可以同时监听多个属性,且用相应的方法响应处理。

Tip

watch属性和v-model属性有类似的地方,都是实时监听相应值的改变而做出实时的改变,但v-model的局限是只能对数进行操作,而做不到回调函数的响应。
watch属性和computed属性也有类似的地方,但computed响应后将原来的数据变量名改成了属于它自己的变量名,只能单向操作。

这些属性都有属于自己的应用场合,灵活运用才能发挥他们最大的作用。


Vuewatch属性是用来监听数据的变化并执行相应的操作。在Vue中,我们可以通过watch来深度监听数组的变化。 使用深度监听数组的方法如下: ``` watch: { 'myArray': { handler: function(newVal, oldVal) { // 数组发生变化时的操作 }, deep: true } } ``` 其中,`myArray`是要监听的数组名。通过设置`deep`为`true`,可以实现对数组内部元素的变化进行监听。当数组中的元素发生增加、删除、替换等操作时,handler函数会被触发。 例如,如果我们有一个数组`myArray`,当该数组中的元素发生变化时,我们可以在handler函数中执行相应的操作。比如,在数组中新增一个元素,可以在handler函数中打印出新增的元素: ``` watch: { 'myArray': { handler: function(newVal, oldVal) { console.log('新增元素:', newVal[newVal.length-1]); }, deep: true } } ``` 引用介绍了Vuewatch属性以及深度监听的方法,引用给出了一个示例,展示了当数组元素发生改变时的效果。通过设置watch的deep属性为true,可以实现对数组的深度监听。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [vue watch普通监听和深度监听实例详解(数组和对象)](https://download.youkuaiyun.com/download/weixin_38689041/12953951)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [VUE使用WATCH监听数组或对象的总结](https://blog.youkuaiyun.com/weixin_39645308/article/details/111783275)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [vue整合SSM项目实战](https://download.youkuaiyun.com/download/m0_55755339/88241603)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值