Vue中watch对象内属性的方法
栏目: JavaScript · 发布时间: 6年前
内容简介:vue提供了上述情况里里面的
vue提供了 watch
方法,用于监听实例内 data
数据的变化。通常写法是:
new Vue({
data: {
count: 10,
blog:{
title:'my-blog',
categories:[]
}
},
watch: {
count: function (newval, oldVal) {
console.log(`new: %s, old: %s`, newVal, oldVal);
}
}
})
上述情况里 data
中的 count
属性可以直接监听,但是如果需要监听的数据是对象内的某一属性值的变化,直接 watch
对象 blog
是检测不到变化的,这是因为 blog
这个对象的指向并没有发生改变。有几个解决方法
1.深度监测
new Vue({
data: {
count: 10,
blog:{
title:'my-blog',
categories:[]
}
},
watch: {
blog:{
handler(newVal,oldVal){
console.log(`new: ${newVal}, old: ${oldVal}`);
},
deep:true
}
}
})
里面的 deep
设为了 true
,这样的话,如果修改了这个 blog
中的任何一个属性,都会执行 handler
这个方法。不过这样会造成更多的性能开销,尤其是对象里面属性过多,结构嵌套过深的时候。而且有时候我们就只想关心这个对象中的某个特定属性,这个时候可以这样
2.用字符串来表示对象的属性调用
new Vue({
data: {
count: 10,
blog:{
title:'my-blog',
categories:[]
}
},
watch: {
'blog.categories'(newVal, oldVal) {
console.log(`new:${newVal}, old:${oldVal}`);
},
}
})
3.使用 computed
计算属性
new Vue({
data: {
count: 10,
blog:{
title:'my-blog',
categories:[]
}
},
computed: {
categories() {
return this.blog.categories;
}
},
watch: {
categories(newVal, oldVal) {
console.log(`new:${newVal}, old:${oldVal}`);
},
},
})
Reference
以上所述就是小编给大家介绍的《Vue中watch对象内属性的方法》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- JavaScript对象之数据属性与访问器属性
- python – Django属性错误. ‘module’对象没有属性’rindex’
- JavaScript之对象属性
- [译] 深入 JS 对象属性
- Python对象属性的那些事
- 什么是面向对象-类的属性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++Templates中文版
David Vandevoorde、Nicolai M.Josuttis / 陈伟柱 / 人民邮电出版社 / 2008-2 / 69.00元
本书是C++模板编程的完全指南,旨在通过基本概念、常用技巧和应用实例3方面的有用资料,为读者打下C++模板知识的坚实基础。 全书共22章。第1章全面介绍了本书的内容结构和相关情况。第1部分(第2~7章)以教程的风格介绍了模板的基本概念,第2部分(第8~13章)阐述了模板的语言细节,第3部分(第14~18章)介绍了C++模板所支持的基本设计技术,第4部分(第19~22章)深入探讨了各种使用模板......一起来看看 《C++Templates中文版》 这本书的介绍吧!