1, Vue中给data中的对象属性添加一个新的属性时会发生什么,如何解决?
<template >
<div >
<ul>
<li v - for ="value in obj" :key = "value" >
{{value}}
</li>
</ul>
<button @click="addObjB" >添加obj.b </button>
</div>
</template>
<script >
export default {
data() {
return {
obj: {
a: 'obj.a'
}
}
},
methods: {
addObjB() {
this.obj.b ='obj.b'
console.log(this.obj)
}
}
}
</script>
<style></style>
点击button会发现, obj.b 已经成功添加,但是视图并未刷新:
原因在于在Vue实例创建时, obj.b 并未声明,因此就没有被Vue转换为响应式的属性,自然就不会触发视图的更新,这时就需要使用Vue的全局api—— $set():
addObjB () {
// this.obj.b = 'obj.b'
this
.$set(this.obj, 'b', 'obj.b')
console.log(this.obj)
}
153

被折叠的 条评论
为什么被折叠?



