Vue 中监听watch 的变化以及watch 各个属性的详解
1: watch 使用的几种方法通过watch 监听data 数据变化, 数据发生变化时, 就会打印当前值:watch: {data(val, oldValue) {console.log(val);console.log(oldValue);}}2: 通过watch 监听docData 数据的变化, 数据发生变化时, this.change_number++(使用深度监听)watch: {ha.
·
1: watch 使用的几种方法
通过watch 监听data 数据变化, 数据发生变化时, 就会打印当前值:
watch: {
data(val, oldValue) {
console.log(val);
console.log(oldValue);
}
}
2: 通过watch 监听docData 数据的变化, 数据发生变化时, this.change_number++
(使用深度监听)
watch: {
handler(newVal) {
this.change_number++
}
deep: true
}
3: 通过watch 监听data 数据变化, 数据发生变化时, 执行changeData() 方法
watch: {
data: "chnageData"
},
methods: {
changeData(curVal, oldVal) {
console.log(curVal, oldVal);
}
}
3: 详解watch 监听器中immediate, handler 和deep 属性
immediate 和 handler
这样使用watch 有一个特点, 就是当值第一次绑定他的时候, 不会执行监听函数, 只有孩子发生改变时才会执行。 如果我们在最初绑定值的也会执行函数, 则就需要使用到 immediate 属性。
watch: {
docData: {
handler(neVal) {
this.chnage_number++
}
immediate: true
}
}
4: deep 当需要监监听一个对象改变的时候, 普通的watch 方法无法监听到普通对象内部属性, 此时就需要
deep 属性对对象进行深度监听
data() {
return {
docData: {
'doc_id': 1,
'tpl_data': 'abc'
}
}
}
watch: {
docData: {
docData: {
handler(newVal) {
this.change_number++
}
}
deep: true
}
}
设置为deep: true 则可以监听到docData_id 的变化, 此时会给dicData 的所有属性都加上这个监听器,
当对象属性比较多时, 每一个属性的变化都会执行handler。 如果只需要监听对象中一个属性值, 则可以做
一下优化: 使用字符串的形式监听对象。
data() {
return {
docData: {
'doc_id': 1,
'tpl_data': 'abc'
}
}
}
watct: {
'docData.doc_id': {
handler(newVal, oldVal) {
....
}
}
deep: true;
}
数组(一维, 二维) 的变化是不断需要通过监听器来进行监听, 对象数组中对象的属性变化则需要使用deep 深度监听。
更多推荐
已为社区贡献13条内容
所有评论(0)