[英]angularjs disturbs json structure
我按照以下順序從服務器端獲取json:
[{ "outlet_id": 83 "outlet_name": "My Outlet" "address": "My Outlet" "shop_number": "123" "street": "123" "building_no": "52" "key_location": "Location 123" "mohallah": "Mohalla 123" "landline": "1235869" "owner_name": "Owner" "Manufecture": "A" "BrandName": "B" "Variant": "C" "BRANDDiscription": "D" "SIZE": "E" "Variant/Promotions": null "Segment": null }]
但是當我顯示它時,它擾亂了秩序,我正在使用ng-repeat,如:
<td ng-repeat="(key, value) in vm.outletFieldAttrsList[0]">{{value}}</td>
屬性的順序與服務器返回的JSON中的順序不同,有誰可以幫助?
Javascript“對象”沒有“訂單”這樣的東西 - 如果你說的話
{“e”:0,“b”:123,“c”:345“......
它不會被枚舉為e,b,c,因為它是在文字中設置的 - 枚舉的結果將簡單地為b,c,e ...(按字母表)。
對於正確的枚舉,您必須將訂單存儲在其他實體中(如數組[“e”,“b”,“c”])
我想你嘗試使用arr.sort,但不保證。
sort()方法對數組中的元素進行排序並返回數組。 排序不一定穩定。 默認排序順序是根據字符串Unicode代碼點。
如果未提供compareFunction,則通過將元素轉換為字符串並按Unicode代碼點順序比較字符串來對元素進行排序。 例如,“Cherry”出現在“banana”之前。 在數字排序中,9出現在80之前,但由於數字被轉換為字符串,因此“80”以Unicode順序出現在“9”之前。
我相信最好的解決方案,就是響應按照你想要的順序排列。
例:
[0: { ITEM }, 1 : {ITEM 2}]
或者創建一個兼容的功能:
items.sort(function (a, b) {
return a.localeCompare(b);
});
更多細節.. ,參見參考資料
我找到了解決這個問題的方法:
<td ng-repeat="key in objectKeys(outletFieldAttrsList[0])"> </td>
和控制器方面:
$scope.objectKeys = function (obj) { return Object.keys(obj); }
Object.keys以與它們相同的順序返回該對象的鍵。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.