微信小程序 setData使用方法及常用错误解决办法
微信小程序 setData使用方法及常用错误解决办法
最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序。
就在这里。。没错就是这里,传回来的值是以jsonarray格式传过来的。
我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok,
结果没想到小程序setData()设置数组对象的某个元素的属性时根本没用。。。。。
然后百度一会儿找到了方法 https://www.jb51.nethttps://www.geek-share.com/detail/2703671993.html
最近在使用微信小程序的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})
最后还必须setData一下,不然地图不会刷新。。
如果QT瞬间弄好,真的麻烦。。。。。。。。。。。。。
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
您可能感兴趣的文章:
- 关于微信小程序使用不了push()方法的解决办法
- 关于使用ADODB.Connection (0x800A0E7A) 未找到提供程序。该程序可能未正确安装 错误的解决办法
- word2007的问题 此错误通常是由宏安全性设置造成的。如果您知道宏来自您信任的来源,则可将宏安全性设置更改为允许启用宏。宏安全性设置的更改方式取决于您使用的 Microsoft Office System 程序 解决方法
- java 小程序开发PKCS7Padding 解密方法实现,以及错误Cannot find any provider supporting AES/CBC/PKCS7Padding 解决办法
- 微信小程序picker组件不能使用对象的解决办法
- 微信小程序模板消息41003 page路径错误解决办法
- 64位win7下使用C_API编写mysql程序的错误及解决办法记录
- VS使用进程调试出现“没有正确安装调试器。请运行安装程序安装或修复调试器”的错误,解决方法。
- 微信小程序访问豆瓣电影api 400 (Bad Request)错误解决方法
- 微信小程序访问豆瓣电影api400错误解决方法
- EF(Entity Framework)发生错误”正在创建模型,此时不可使用上下文“的解决办法。 正在创建模型,此时不可使用上下文。如果在 OnModelCreating 方法内使用上下文或如果多个线程同时访问同一上下文实例,可能引发此异常。请注意不保证 DbContext 的实例成员和相关类是线程安全的。 临时解决了这个问题,在Context的构造函数中,禁用了自动初始化:
- 使用Visual Studio Development Server开发域验证程序时出现HTTP Error 403 - Forbidden错误的解决办法
- 微信小程序 加载 app-service.js 错误解决方法
- npm使用过程中的一些错误解决办法及npm常用命令
- 微信小程序 setData的使用方法详解
- IIS “另一个程序正在使用此文件,进程无法访问。”错误提示的解决办法
- C:\Windows\system32\MSVCR100.dll 没有被指定在 Windows 上运行,或者它包含错误。请尝试使用原始安装媒体重新安装程序,或联系您的系统管理员或软件供应商以获取支持。【解决办法】
- 使用net.sf.json包提供的JSONObject.toBean方法时,日期转化错误解决办法
- 微信小程序 the server responded with a status of 404 错误解决方法
- 使用PL/SQL Developer 远程连接Oracle数据库出现 “无监听程序“错误 的解决办法