微信小程序 setData 的坑
最近在使用微信小程序的setData时,遇到了以下问题。如下:
官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的:
Page({
data: {
array: [{text: 'init data'}],
},
changeItemInArray: function() {
this.setData({
'array[0].text':'changed data'
})
}
})
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
使用了 ‘array[0].text’ : ‘changed data’ 这样的值。但在实际使用中,我们对数组的中的某个元素的设置是动态的。即 我们通常应该是 ‘array[‘+index+’].text’ : ‘changed data’ ,其中index应该是一个动态的数字。但显然,这样是无法使用在对象的key中的。
所以,我只能使用了一个变通的方法。如下:
var param = {};
var string = "array["+index+"].text;
param[string] = 'changed data';
that.setData(param);
- 1
- 2
- 3
- 4
即提前把对象准备好。
希望以后可以有更好的方法。
版权声明:本文为博主原创文章,未经博主允许不得转载。
-
u010297040
2017-07-22 18:284楼-
刚在网上看到了可以用es6的方式:
var key = "XXX"
this.setData({
[key]:value
}) -
回复 1条回复
-
Boxuerixin
2017-04-25 13:093楼-
很棒,可以转载吗?
-
qq_36131244
2017-03-29 18:292楼-
语法规定的有点蛋疼。。还不如跟vue一样呢
-
yu88288356
2017-02-10 17:501楼-
yes