微信小程序 setData使用方法及常用错误解决办法
微信小程序setData使用方法及常用错误解决办法
最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序。
就在这里。。没错就是这里,传回来的值是以jsonarray格式传过来的。
我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok,
结果没想到小程序setData()设置数组对象的某个元素的属性时根本没用。。。。。
然后百度一会儿找到了方法 https://www.nhooo.com/article/111691.htm
最近在使用微信小程序的setData时,遇到了以下问题。如下:
官网文档在使用setData()设置数组对象的某个元素的属性时,是这么使用的:
Page({ data:{ array:[{text:'initdata'}], }, changeItemInArray:function(){ this.setData({ 'array[0].text':'changeddata' }) } })
使用了‘array[0].text':‘changeddata'这样的值。但在实际使用中,我们对数组的中的某个元素的设置是动态的。即我们通常应该是‘array[‘+index+'].text':‘changeddata',其中index应该是一个动态的数字。但显然,这样是无法使用在对象的key中的。
所以,我只能使用了一个变通的方法。如下:
varparam={}; varstring="array["+index+"].text; param[string]='changeddata'; that.setData(param);
这个每个属性都需要来一次。。。
不知道是我没找到更好的方法还是怎样,我的强迫症都出来了。。
下面就是我的代码。。。
markers:{ iconPath:"/picture/bike.png", id:0, latitude:23.099994, longitude:113.324520, width:50, height:50 }
这是markers类结构,我为了赋值写了这么多。。
for(vari=0;i最后还必须setData一下,不然地图不会刷新。。
如果QT瞬间弄好,真的麻烦。。。。。。。。。。。。。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!