在用this.setData()更新数据时,如果要更新的数据如下:
data: {
person: {
name: 'xiaoming',
occupation: 'front-end engineer'
}
}
要把person.name更新为"xiaogang",我们如果通过以下途径更新
- 更新途径1:
this.setData({
person.name = "xiaogang"
})
这样更新系统会报错,在微信小程序中所有的用.号加=号更新数据都不符合语法要求;
- 更新途径2
this.setData({
person: {
name: 'xiaogang'
}
})
这样更新后,person.occupation属性将会丢失,微信小程序允许只写需要更新的数据,但这种方式仅仅对data对象的一级子属性(即person)适用,对二级属性(即person.name)无法适用,在这种情况下,要么将person的全部属性都列举(包括需要更新的和未更新的),要么采取下列方式:
var name = 'person.name';
this.setData({
[name]: 'xiaogang'
})
这种方式可以达到只书写需要更新的二级属性;