【#yyds干货盘点#Vue $watch监听对象属性,数组内对象属性改变】从来好事天生俭,自古瓜儿苦后甜。这篇文章主要讲述#yyds干货盘点#Vue $watch监听对象属性,数组内对象属性改变相关的知识,希望能为你提供帮助。
踩坑经历
我刚开始对数组里的对象属性监听以下对象里的newValue是改变后的新值,oldValue是改变之前的旧值
watch:{
listMenu[4].value:{
handler(newValue, oldValue) {
console.log(newValue)
}
直接报错Watcher only accepts simple dot-delimited paths. For full control, use a function instead解决方法监听数组内对象属性变化
用以下两种方法即可:
//第一种方法:
created() {
this.$watch(
() => this.listMenu[4].value,
function(val, old) {}
)
}
//第二种方法:
computed:{
watchInputData(){ return this.listMenu[4].value }
},
watch:{
watchInputData() {
//这里即可监听到
}
监听一个对象及属性
/*普通watch无法监听到对象内部属性变化,只有data中数据改变时才能监听变化。
因此可添加deep属性:深层遍历,会监听对象内所有属性都变化。注意监听数组的变更不需要这么做。*/
watch: {
//第一种监听所有属性的变化,直接监听整个属性,消耗大不建议
obj: {
handler(newValue, oldValue) {
console.log("对象所有属性监听", newValue, oldValue);
},
deep: true
},
//第二种监听对象一个属性的变化
"obj.name": {
immediate: true, //true首次加载执行,默认false
handler(newValue, oldValue) {
console.log("单个属性监听", newValue, oldValue);
}
},
}
同样也可以设置计算属性computed来监听
omputed: {
getName: function() {
return this.obj.name
}
}
watch: {
getName: {
handler: function() {
//监听
},
}
首次加载不调用监听函数watch首次加载时不会调用的,只有值变化时才能执行,若要首次调用,需要使用immediate属性。只需在对应的函数内使用immediate: true即可;
公众号:前端老实人,获取更多学习资料以及与众多大佬交流机会
推荐阅读
- 全面解锁Kubernetes(百度爱番番技术实践全揭秘!)
- Flutter 专题29 图解自定义底部状态栏 ACEBottomNavigationBar#yyds干货盘点#
- Java 在Word中嵌入多媒体(视频音频)文件
- #yyds干货盘点#Aop的两个最常见的应用场景
- #星光计划2.0# 添加树莓派4B到OHOS3.0编译框架
- #yyds干货盘点#-设计模式分享-抽象工厂模式
- redis | 十二redis之事务
- 算法 | 第1章 数组与字符串相关《程序员面试金典》#yyds干货盘点#
- 30 分钟,全面解析 AJAX #yyds干货盘点#