您好,登錄后才能下訂單哦!
微信小程序 setData使用方法及常用錯誤解決辦法
最近在弄微信小程序,類似于共享單車用來練練手,基本原理就是小程序發送經緯度給服務器,服務器從數據庫中檢索經緯度附近的單車傳給小程序。
就在這里。。沒錯就是這里,傳回來的值是以jsonarray格式傳過來的。
我需要將jsonarray進行解析獲取經緯度,ID等車輛信息,然后賦值給小程序地圖上的mark,一般我的思路時直接用個for循環給每個mark進行賦值然后再Setdata一下就ok,
結果沒想到小程序setData()設置數組對象的某個元素的屬性時根本沒用。。。。。
然后百度一會兒找到了方法 https://www.jb51.net/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瞬間弄好,真的麻煩。。。。。。。。。。。。。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。