2016-01-23 41 views
3

我得到從服務器端的JSON在以下順序:angularjs擾亂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-重複像:

<td ng-repeat="(key, value) in vm.outletFieldAttrsList[0]">{{value}}</td>

屬性的順序與服務器返回的JSON中的順序不同,那裏的任何人都可以提供幫助?

回答

0

我發現解決了這個問題:

<td ng-repeat="key in objectKeys(outletFieldAttrsList[0])"> </td>

和控制器側:

$scope.objectKeys = function (obj) { 
 
      
 
     return Object.keys(obj); 
 
    }

,因爲它們存在Object.keys返回相同序列對象的密鑰。

0

的Javascript 「對象」 沒有這樣的事,作爲一個 「命令」 - 如果你有說

{ 「E」:0, 「B」 :123, 「c」:345「...

它不會被枚舉,然後作爲e,b,c,因爲它是在文字中設置的 - 枚舉的結果將是簡單的b,c,e .. (按字母表)

對於正確的枚舉,你必須順序存儲在其他一些實體(如數組[「E」,「B」,「C」])

0

我想嘗試使用arr.sort,但它是不保證。

sort()方法對數組元素進行排序,並返回數組 。排序不一定穩定。默認排序順序 根據字符串Unicode代碼點。

如果未提供compareFunction,則通過將元素轉換爲字符串並按Unicode代碼點順序比較字符串來對元素進行排序。例如,「櫻桃」出現在「香蕉」之前。在數字排序中,9在80之前,但由於數字被轉換爲字符串,「80」以Unicode順序出現在「9」之前。

Array.prototype.sort()

我認爲最好的解決方案,這將是響應來自於你想要的順序。

實施例:

[0: { ITEM }, 1 : {ITEM 2}] 

或創建一個功能comparate:

items.sort(function (a, b) { 
    return a.localeCompare(b); 
}); 

More details ..,請參閱參考