作者:月下獨(dú)奏,來自原文地址
就在這里。。沒錯(cuò)就是這里,傳回來的值是以jsonarray格式傳過來的。
我需要將jsonarray進(jìn)行解析獲取經(jīng)緯度,ID等車輛信息,然后賦值給小程序地圖上的mark,一般我的思路時(shí)直接用個(gè)for循環(huán)給每個(gè)mark進(jìn)行賦值然后再Setdata一下就ok,
結(jié)果沒想到小程序setData()設(shè)置數(shù)組對(duì)象的某個(gè)元素的屬性時(shí)根本沒用。。。。。
然后百度一會(huì)兒找到了方法
/////////////////////////////////////////////////
最近在使用微信小程序的setData時(shí),遇到了以下問題。如下:
官網(wǎng)文檔在使用setData()設(shè)置數(shù)組對(duì)象的某個(gè)元素的屬性時(shí),是這么使用的:
-
Page({
-
data: {
-
array: [{text: 'init data'}],
-
},
-
changeItemInArray: function() {
-
this.setData({
-
'array[0].text':'changed data'
-
})
-
}
-
})
使用了 ‘array[0].text’ : ‘changed data’ 這樣的值。但在實(shí)際使用中,我們對(duì)數(shù)組的中的某個(gè)元素的設(shè)置是動(dòng)態(tài)的。即 我們通常應(yīng)該是‘array[‘+index+’].text’ : ‘changed data’ ,其中index應(yīng)該是一個(gè)動(dòng)態(tài)的數(shù)字。但顯然,這樣是無法使用在對(duì)象的key中的。
所以,我只能使用了一個(gè)變通的方法。如下:
-
var param = {};
-
var string = "array["+index+"].text;
-
param[string] = 'changed data';
-
that.setData(param);
///////////////////////////////////////////////////////////////////////////// 這個(gè)每個(gè)屬性都需要來一次。。。 不知道是我沒找到更好的方法還是怎樣,我的強(qiáng)迫癥都出來了。。 下面就是我的代碼。。。
-
markers: {
-
iconPath: "/picture/bike.png",
-
id: 0,
-
latitude: 23.099994,
-
longitude: 113.324520,
-
width: 50,
-
height: 50
-
}
這是markers類結(jié)構(gòu),我為了賦值寫了這么多。。
-
for(var i = 0; i < res.data.length; i++){
-
// that.data.markers[i].id=i;
-
// mark.id=i;
-
var param = {};
-
var string = "markers["+i+"].id";
-
param[string] = res.data[i].Bike_id;
-
that.setData(param);
-
-
-
var string="markers["+i+"].iconPath";
-
param[string] ="/picture/bike.png";
-
that.setData(param);
-
-
-
var string = "markers["+i+"].latitude";
-
param[string] = res.data[i].BIKE_latitude;
-
that.setData(param);
-
-
-
-
var string = "markers["+i+"].longitude";
-
param[string] = res.data[i].BIKE_longitude;
-
that.setData(param);
-
-
-
-
-
var string = "markers["+i+"].width";
-
param[string] = 50;
-
that.setData(param);
-
-
-
var string = "markers["+i+"].height";
-
param[string] = 50;
-
that.setData(param);
-
/* that.setData({
-
markers:[{
-
iconPath: "/picture/bike.png",
-
id: 0,
-
latitude: 23.099994,
-
longitude: 113.324520,
-
width: 50,
-
height: 50
-
}]
-
})*/
-
}
-
// console.log(res.data[1])
-
var markk=that.data.markers;
-
that.setData({markers:markk})