簡體   English   中英

angularjs擾亂json結構

[英]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中的對象屬性順序無法保證。 您需要使用Array或Map。

相關:

AngularJS按屬性排序

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”之前。

Array.prototype.sort()

我相信最好的解決方案,就是響應按照你想要的順序排列。

例:

[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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM