1.通过obj.b = value的方式给对象添加属性值无效问题
vue中通过obj.b = value的方式给对象添加属性值(b属性之前没有)不会触发视图更新,原因在于在Vue实例创建时, obj.b 并未声明,因此就没有被Vue转换为响应式的属性,这时就需要使用Vue的全局api—— $set():
this.$set(this.obj, 'b', 'obj.b')
- 相当于手动的去把 obj.b 处理成一个响应式的属性,此时视图也会跟着改变了.
- 如果对象已经有某个响应式属性了,没必要再$set,直接赋值。
- 判断对象本身有无某个属性:Object的hasOwnProperty()方法,返回一个布尔值,判断对象是否包含特定的自身(非继承)属性。
偶尔出现数据层次太多,没有触发render函数进行自动更新的时候,可以在this.$set前加上一句:
this.$forceUpdate()
2.根据索引设置元素:
1、调用 s e t 方 法