解决vue中对象属性改变视图不更新的问题

常规情况下我们在vue实例的data中设置响应数据。但当数据为对象,我们增加或删除对象属性值时,视图并不触发更新.

vue的文档里说的很清楚,这些会触发更新
解决vue中对象属性改变视图不更新的问题_第1张图片

但是:
1.当你利用索引直接设置一个项时
2.当你修改数组的长度时
都不会触发视图更新

解决vue中对象属性改变视图不更新的问题_第2张图片
现在你可以用下面的方法设置
方案一:利用Vue.set(object,key,val)
例:Vue.set(vm.obj,‘k1’,‘v1’)
方案二:利用this. s e t ( t h i s . o b j , k e y , v a l ) 例 : t h i s . set(this.obj,key,val) 例:this. set(this.obj,key,val)this.set(this.obj,‘k1’,‘v1’)

如果上面的方法都不行的话:
方案三:就利用Object.assign({},this.obj)创建新对象
如果是数组 就Object.assign([],this.obj)
如果是对象 就Object.assign({},this.obj)

     this.obj.k1='v1';
     this.obj = Object.assign({}, this.obj)
 或
     this.obj = Object.assign({}, this.obj,{'k1','v1'})

方案四:使用…方法
如果是数组或对象就

     this.obj = [...this.obj]
或
	 this.obj = {...this.obj}

你可能感兴趣的:(vue,element,ui)