# watch 的方法和属性
watch: {
name: {
handler(newVal, oldVal) {
console.log(newVal, oldVal);
}
}
}
### immediate 属性
这个属性存在的原因在于 watch 有一个特点:当一个值第一次被绑定时,是不会执行[监听]函数( watch )的,只有当值发生了改变才回去执行。
当我们需要在最初绑定值的时候,就对该值执行监听,那就用到了这个属性。
watch: {
name: {
handler(newVal, oldVal) {
console.log(newVal, oldVal);
},
immediate: true
}
}
### deep 属性
当需要监听一个对象的改变时,以上的监听方式已经不能满足,原因是受到 JavaScript 的限制(以及废弃 Object.observe),Vue 不能检测到对象属性的添加或删除,导致我们对一个对象的监听是无效的。
此时,我们需要使用 deep 属性对对象进行[深度]监听。
watch: {
obj: {
handler(newVal, oldVal) {
console.log(newVal, oldVal);
},
deep: true
}
}
深度监听的方法
1.使用 deep 属性
// 开启深度监听 deep: true
2.使用 computed 计算属性监听
computed: {
toBet(){
return JSON.parse(JSON.stringify(this.bet))
}
}
!!! 对象也是可以立即监听的 我们可以选择监听对象中的某一个属性 可以避免一些问题{不会出现新旧值都一样的情况}
- toBet.count
- toBet