赞
踩
监听对象或者数组时,就会出现这种情况,即使加了深度监听,发现newVal和oldVal还是一样,那是因为对象或者数组是引用类型,赋值的时候是指向地址的,地址指向堆区存储的值,所以对象变化的时候其实原值已经改变了,就出现了新值和旧值相等。
1:直接监听对象里的属性,例,
data(){
return{
obj:{
arr:[],
b:' ',
c:' '
}
}
}
watch:{
'obj.c'(newVal, oldVal){
......
}
}
2、利用computed的缓存属性来监听,例,
computed:{ newObj(){ return JSON.stringify(this.obj) //这里用到深度拷贝 } }
watch:{
newObj:{
handler(newVal, oldVal){
.........
},
deep:true
}
}
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。