微信小程序 setData使用方法及常用错误解决办法

发布时间 - 2026-01-11 01:05:08    点击率:

微信小程序 setData使用方法及常用错误解决办法

最近在弄微信小程序,类似于共享单车用来练练手,基本原理就是小程序发送经纬度给服务器,服务器从数据库中检索经纬度附近的单车传给小程序。

就在这里。。没错就是这里,传回来的值是以jsonarray格式传过来的。
我需要将jsonarray进行解析获取经纬度,ID等车辆信息,然后赋值给小程序地图上的mark,一般我的思路时直接用个for循环给每个mark进行赋值然后再Setdata一下就ok,

结果没想到小程序setData()设置数组对象的某个元素的属性时根本没用。。。。。

然后百度一会儿找到了方法   https://www./article/111691.htm

最近在使用微信小程序的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瞬间弄好,真的麻烦。。。。。。。。。。。。。

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# 微信小程序  # setData  # 小程序  # setDate常见错误  # 详解小程序中h5页面onShow实现及跨页面通信方案  # 微信小程序实现传递多个参数与事件处理  # 微信小程序学习笔记之跳转页面、传递参数获得数据操作图文详解  # 微信小程序页面间值传递的两种方法  # 微信小程序使用navigateTo数据传递的实例  # 微信小程序教程系列之页面跳转和参数传递(6)  # 微信小程序在其他页面监听globalData中值的变化  # 微信小程序Page中data数据操作和函数调用方法  # 微信小程序获取用户信息的两种方法wx.getUserInfo与open-data实例分析  # 微信小程序跨页面传递data数据方法解析  # 是一个  # 这是  # 使用了  # 这么多  # 但在  # 我没  # 希望能  # 然后再  # 写了  # 我只能  # 谢谢大家  # 弄好  # 类似于  # 解决办法  # 数据库中  # 还必须  # 会儿  # 官网  # 基本原理  # 图上 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel如何使用软删除(Soft Deletes)功能_Eloquent软删除与数据恢复方法  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  EditPlus中的正则表达式 实战(4)  清除minerd进程的简单方法  如何有效防御Web建站篡改攻击?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  jQuery中的100个技巧汇总  Laravel API路由如何设计_Laravel构建RESTful API的路由最佳实践  Linux系统命令中tree命令详解  Python进程池调度策略_任务分发说明【指导】  Java类加载基本过程详细介绍  Linux安全能力提升路径_长期防护思维说明【指导】  laravel怎么为应用开启和关闭维护模式_laravel应用维护模式开启与关闭方法  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  如何快速登录WAP自助建站平台?  Laravel如何实现URL美化Slug功能_Laravel使用eloquent-sluggable生成别名【方法】  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Android自定义listview布局实现上拉加载下拉刷新功能  Laravel如何使用Collections进行数据处理?(实用方法示例)  制作公司内部网站有哪些,内网如何建网站?  Laravel怎么生成URL_Laravel路由命名与URL生成函数详解  Laravel如何实现多表关联模型定义_Laravel多对多关系及中间表数据存取【方法】  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  Python自然语言搜索引擎项目教程_倒排索引查询优化案例  香港服务器选型指南:免备案配置与高效建站方案解析  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  如何在云主机上快速搭建网站?  网易LOFTER官网链接 老福特网页版登录地址  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  Laravel如何使用Laravel Vite编译前端_Laravel10以上版本前端静态资源管理【教程】  如何在腾讯云服务器快速搭建个人网站?  如何实现javascript表单验证_正则表达式有哪些实用技巧  Laravel如何使用模型观察者?(Observer代码示例)  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  如何批量查询域名的建站时间记录?  敲碗10年!Mac系列传将迎来「触控与联网」双革新  大连 网站制作,大连天途有线官网?  如何在腾讯云免费申请建站?  Laravel如何集成微信支付SDK_Laravel使用yansongda-pay实现扫码支付【实战】  浅谈Javascript中的Label语句  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  JavaScript模板引擎Template.js使用详解  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  Laravel Eloquent模型如何创建_Laravel ORM基础之Model创建与使用教程  Swift中循环语句中的转移语句 break 和 continue  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何快速搭建安全的FTP站点?  Laravel怎么清理缓存_Laravel optimize clear命令详解  今日头条微视频如何找选题 今日头条微视频找选题技巧【指南】