【问题标题】:angularjs disturbs json structureangularjs打乱了json结构
【发布时间】:2016-01-23 13:18:52
【问题描述】:

我按以下顺序从服务器端获取 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 angularjs json ng-repeat


    【解决方案1】:

    不保证 JavaScript 中对象属性的顺序。为此,您需要使用 Array 或 Map。

    相关:

    AngularJS sorting by property

    【讨论】:

      【解决方案2】:

      Javascript“对象”没有“订单”之类的东西——如果你说的话

      { “e”:0, “乙”:123, "c": 345"...

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

      为了正确枚举,您必须将顺序存储在其他实体中(如数组 [“e”、“b”、“c”])

      【讨论】:

        【解决方案3】:

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

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

        如果没有提供 compareFunction,则通过将元素转换为字符串并按 Unicode 代码点顺序比较字符串来对元素进行排序。例如,“樱桃”出现在“香蕉”之前。在数字排序中,9 在 80 之前,但由于数字被转换为字符串,因此在 Unicode 顺序中,“80”在“9”之前。

        Array.prototype.sort()

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

        例子:

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

        或者创建一个函数比较:

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

        More details ..,见参考

        【讨论】:

          【解决方案4】:

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

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

          和控制器端:

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

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

          【讨论】:

            猜你喜欢
            • 2013-05-22
            • 2015-03-30
            • 1970-01-01
            • 1970-01-01
            • 2015-12-11
            • 1970-01-01
            • 2017-05-26
            • 1970-01-01
            • 2014-02-13
            相关资源
            最近更新 更多