文本转自于:https://blog.csdn.net/weixin_46376652/article/details/125689307 作者:frontEndSmallWhite

 

一、两种监视方式

1、watch属性直接监视

如果刚开始确定监视对象,在vue中可以直接使用watch属性实现监视

 

watch:{
            //正常写法
            Info:{
                immediate:true,
                handler(newValue,oldValue){
                    console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
                }
            }
 
            //简写形式
            // Info(newValue,oldValue){
            //     console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
            // }
}

 

handler函数

监视属性中的函数,能够通过获取newValue和oldValue的值,进行监视到属性改变后的一些操作;

 

接收两个参数:

 

newValue:表示新的值

oldValue:表示改变前的值

 

immediate属性:实现初始化的时候调用一次监视函数handler,默认为false

2、vm.$watch

如果刚开始不确定监视的对象,就可以后续再使用这个实现监视 

 

//另一种写法,在vm外使用$调用
vm.$watch("Info",{
        handler(newValue,oldValue){
            console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
        }
})

二、深度监视

watch默认监视单层属性的改变,想实现监测多层结构需要使用deep属性

监视多级结构中某个属性的变化

watch:{ “numbers.a”:{ … } } //numbers是data上的一个key,里面包含a

注意:本来所监视的属性都是字符串,需要带双引号,只不过单层的省略了双引号

 

deep属性

用于开启深度监视,多级结构中任何一个属性值发生变化,都能够检测到(内部的改变也能够通过外部监测到),监视多级结构中所有属性的变化

watch:{
            'numbers.a':{
                handler(){
                    console.log("numbers中的a改变了")
                }
            },
            numbers:{
                // 开启深度监视
                deep:true,
                handler(){
                    console.log("numbers改变")
                }
            }
}

 

三、监视属性的简写形式

与计算属性类似,当不需要使用其他属性只使用handler属性时,可以使用简写形式

//简写形式
Info(newValue,oldValue){
     console.log("Info被修改了,原来的天气是",oldValue,",现在的天气是",newValue)
}

 

原文地址:http://www.cnblogs.com/ZhuAo/p/16865903.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性