您好,登錄后才能下訂單哦!
微信小程序 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ì)兒找到了方法 https://www.jb51.net/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ì)本站的支持!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。