uniapp小程序:追加数组中的对象属性,属性数据已经添加,视图不会改变

场景复现:

由于业务需要,需要给数组中的每一个对象添加一个ischecked属性(Boolean)来控制复选框的选中状态,于是:

注意:buycargoodslists为数据源,初始数据源没有定义isChecked属性

for (let i = 0; i < this.buycargoodslists.length; i++) {
this.buycargoodslists[i].isChecked==true;
}

结果可想而知,在控制台查看操作后的数据源buycargoodslists:确实属性isCheck已经插进去了,但是视图没有变化

vue中,追加的对象属性通过直接赋值的方式得不到vue的数据追踪

如果在实例创建之后添加新的属性到实例上,它不会触发视图更新。

vue官方给出的解决方式是:this.$set的方式进行赋值,有两种方式:

用法:this.$set(对象, 属性名, 属性值);


this.$set(target, propertyName/index, value)

for (let i = 0; i < this.buycargoodslists.length; i++) {
this.$set(this.buycargoodslists[i], "isChecked", true);
}

你可能感兴趣的:(微信小程序,小程序)