ng-repeat自动排序错误

时间:2015-05-30 23:26:08

标签: angularjs

我知道我当前版本的Angular,ng-repeat自动排序。我的问题是它的排序看起来不正确。

使用带数字键的对象:

{
    "1": "value",
    "2": "value",
    "10": "value"
}

ng-repeat对其1102进行排序。我熟悉这种排序,并在数字前面抛出0应该修复它。但是,添加0需要额外的代码,需要将其删除才能显示。

同样,转换为数组导致ng-repeat循环遍历所有空值(3-9)并创建多余元素,并生成重复错误。

如何使ng-repeat按键对象进行排序,就好像它们是整数一样?

1 个答案:

答案 0 :(得分:1)

我无法找到一个没有改变数据结构的解决方案,但这里有一个例子,说明如何通过使用键将对象排序为数组来完成。这是html:

<ul ng-controller="ExampleController">
  <li ng-repeat="item in filtered">{{ item.value }}</li>
</ul>

以下是代码:

  controller('ExampleController', ['$scope', function($scope) {
    $scope.list = {
      "1": "1 Value",
      "10": "10 Value",
      "5": "5 Value",
      "2": "2 Value"
    };

    $scope.$watch('list', function (newVal) {
       $scope.filtered = Object.keys(newVal).map(function (key) {
        return { key: key, value: newVal[key] };
      });
    });
  }]);

此代码的输出如下所示:

  • 1值
  • 2 Value
  • 5 Value
  • 10 Value

请注意,这会创建一个更容易使用的键/值对对象数组。以下是它的一个有用的例子:http://plnkr.co/edit/Q0BYLeMzTZmd1k8VzTlQ?p=preview