vue中,怎么给data对象添加新的属性?(尼玛这面试题居然让我给碰上了。。。。)

vue

示例:

<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)

}

$set() 方法相当于手动的去把 obj.b 处理成一个响应式的属性,此时视图也会跟着改变了:

 

以上是 vue中,怎么给data对象添加新的属性?(尼玛这面试题居然让我给碰上了。。。。) 的全部内容, 来源链接: utcz.com/z/375968.html

回到顶部