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

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

vue的文档里说的很清楚,这些会触发更新
这里写图片描述

但是:
1.当你利用索引直接设置一个项时
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}
  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值