欢迎来到258分享网,纯净的网络源码分享基地!

258资源分享网

全部作品
全部作品
网站源码
微信源码
素材特效
源码插件
视频教程
建站学院
热门搜索: 织梦  农业种植  农业  安全设置  官方
258资源分享 > 建站学院 > 微信开发 > 微信小程序循环赋值坑

推荐下载

HTML5响应式自适应网咯设计

2020-05-12   浏览:740

高端HTML5响应式企业通用网

2020-05-06   浏览:521

html5响应式外贸网站英文版

2020-05-08   浏览:510

HTML5自适应律师工作室类网

2020-04-04   浏览:504

HTML5影视传媒文化公司类网

2020-05-12   浏览:502

微信小程序循环赋值坑

发布时间:2020-11-23  

作者:月下独奏,来自原文地址

就在这里。。没错就是这里,传回来的值是以jsonarray格式传过来的。 
我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok, 
结果没想到小程序setData()设置数组对象的某个元素的属性时根本没用。。。。。 
然后百度一会儿找到了方法 
///////////////////////////////////////////////// 
最近在使用微信小程序的setData时,遇到了以下问题。如下:

官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的:

 

Page({

data: {

array: [{text: 'init data'}],

},

changeItemInArray: function() {

this.setData({

'array[0].text':'changed data'

})

}

})

使用了 ‘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);

/////////////////////////////////////////////////////////////////////////////  这个每个属性都需要来一次。。。  不知道是我没找到更好的方法还是怎样,我的强迫症都出来了。。  下面就是我的代码。。。

 

markers: {

iconPath: "/picture/bike.png",

id: 0,

latitude: 23.099994,

longitude: 113.324520,

width: 50,

height: 50

}

这是markers类结构,我为了赋值写了这么多。。

 

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})

本文标签

: