vue.js的监听属性默认只能监听到对象的一级数据的变化,比如attr.a:
data:{
attr:{
a:1,
b:2
}
},
监听不到一级以上的数据,比如:attr.a.a1
data:{
attr:{
a:{
a1:1,
},
b:2
}
},
原因是因为没有开启deep属性为true,默认是false,只监听到一级对象。下面是详细代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>没事练一下Vue</title>
<script src="https://cdn.jsdelivr.net/npm/vue@2.7.10/dist/vue.js"></script>
</head>
<body>
<div id="demo">
</div>
<script>
Vue.config.productionTip=false;
const vm = new Vue({
el:'#demo',
data:{
attr:{
a:{
a1:1,
},
b:2
}
},
computed:{
},
watch:{
'attr.a':{
deep:false,
handler(){
console.log('深度属性变了');
}
}
}
})
</script>
</body>
</html>
调试时,在浏览器控制台输入vm.attr.a.a1=任意值即可测试。
发表评论 取消回复