微信小程序 setData使用方法及常用錯(cuò)誤解決辦法
微信小程序 setData使用方法及常用錯(cuò)誤解決辦法
最近在弄微信小程序,類似于共享單車用來練練手,基本原理就是小程序發(fā)送經(jīng)緯度給服務(wù)器,服務(wù)器從數(shù)據(jù)庫中檢索經(jīng)緯度附近的單車傳給小程序。
就在這里。。沒錯(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ì)兒找到了方法 http://www.dbjr.com.cn/article/111691.htm
最近在使用微信小程序的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' }) } })
使用了 ‘a(chǎn)rray[0].text' : ‘changed data' 這樣的值。但在實(shí)際使用中,我們對(duì)數(shù)組的中的某個(gè)元素的設(shè)置是動(dòng)態(tài)的。即 我們通常應(yīng)該是‘a(chǎn)rray[‘+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})
最后還必須setData一下,不然地圖不會(huì)刷新。。
如果QT瞬間弄好,真的麻煩。。。。。。。。。。。。。
感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!
- 詳解小程序中h5頁面onShow實(shí)現(xiàn)及跨頁面通信方案
- 微信小程序?qū)崿F(xiàn)傳遞多個(gè)參數(shù)與事件處理
- 微信小程序?qū)W習(xí)筆記之跳轉(zhuǎn)頁面、傳遞參數(shù)獲得數(shù)據(jù)操作圖文詳解
- 微信小程序頁面間值傳遞的兩種方法
- 微信小程序使用navigateTo數(shù)據(jù)傳遞的實(shí)例
- 微信小程序教程系列之頁面跳轉(zhuǎn)和參數(shù)傳遞(6)
- 微信小程序在其他頁面監(jiān)聽globalData中值的變化
- 微信小程序Page中data數(shù)據(jù)操作和函數(shù)調(diào)用方法
- 微信小程序獲取用戶信息的兩種方法wx.getUserInfo與open-data實(shí)例分析
- 微信小程序跨頁面?zhèn)鬟fdata數(shù)據(jù)方法解析
相關(guān)文章
關(guān)于Javascript閉包與應(yīng)用的詳解
這篇文章主要介紹了關(guān)于Javascript閉包與應(yīng)用的詳解,文中有非常詳細(xì)的代碼示例.對(duì)正在學(xué)習(xí)js的伙伴們有很好的幫助,需要的朋友可以參考下2021-04-04微信小程序 Button 組件詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了微信小程序 Button 組件詳解及簡(jiǎn)單實(shí)例的相關(guān)資料,需要的朋友可以參考下2017-01-01js展示百度地圖及添加標(biāo)注實(shí)現(xiàn)
這篇文章主要為大家介紹了js展示百度地圖及添加標(biāo)注實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動(dòng)畫示例
這篇文章主要為大家介紹了js實(shí)現(xiàn)兔年轉(zhuǎn)圈圈動(dòng)畫示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01微信小程序 switch組件詳解及簡(jiǎn)單實(shí)例
這篇文章主要介紹了微信小程序 switch組件詳解及簡(jiǎn)單實(shí)例 的相關(guān)資料,需要的朋友可以參考下2017-01-01微信小程序 基礎(chǔ)知識(shí)css樣式media標(biāo)簽
這篇文章主要介紹了微信小程序 基礎(chǔ)知識(shí)css樣式media標(biāo)簽的相關(guān)資料,需要的朋友可以參考下2017-02-02