angularjs扰乱json结构

时间:2016-01-23 13:18:52

标签: javascript angularjs json ng-repeat

我按照以下顺序从服务器端获取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中的顺序不同,有谁可以提供帮助?

4 个答案:

答案 0 :(得分:0)

无法保证JavaScript中对象属性的顺序。您需要使用数组或地图。

相关:

AngularJS sorting by property

答案 1 :(得分:0)

Javascript“对象”没有“订单”这样的东西 - 如果你说的话

{ “e”:0, “b”:123, “c”:345“......

它不会被枚举为e,b,c,因为它是在文字中设置的 - 枚举的结果将只是b,c,e ...(按字母表)。

对于正确的枚举,您必须将订单存储在其他实体中(如数组[“e”,“b”,“c”])

答案 2 :(得分:0)

我认为您尝试使用arr.sort,但不能保证。

  

sort()方法对数组中的元素进行排序并返回   数组。排序不一定稳定。默认排序顺序   是根据字符串Unicode代码点。

如果未提供compareFunction,则通过将元素转换为字符串并按Unicode代码点顺序比较字符串来对元素进行排序。例如,&#34; Cherry&#34;来之前&#34;香蕉&#34;。在数字排序中,9出现在80之前,但由于数字被转换为字符串,&#34; 80&#34;来之前&#34; 9&#34;按Unicode顺序。

Array.prototype.sort()

我相信最好的解决方案,就是按照你想要的顺序响应。

示例:

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

或者创建一个比较函数:

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

More details ..,请参阅参考资料

答案 3 :(得分:0)

我找到了解决这个问题的方法:

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

和控制器方:

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

Object.keys以与它们相同的顺序返回该对象的键。