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对象属性的那些事
- 什么是面向对象-类的属性
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Mathematica Cookbook
Sal Mangano / O'Reilly Media / 2009 / GBP 51.99
As the leading software application for symbolic mathematics, Mathematica is standard in many environments that rely on math, such as science, engineering, financial analysis, software development, an......一起来看看 《Mathematica Cookbook》 这本书的介绍吧!