32

如何获得 Angular 的ng-repeat指令以按每个项目的实际值而不是按每个项目的属性值对列表进行排序?

例如:

<ul>
    <li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>

这是一个可以玩的小提琴:http: //jsbin.com/okatur/1/edit

我意识到我可以.sort()在阵列上做,但这是我唯一的选择吗?

4

2 回答 2

49

从 1.3.0-rc.5 开始

AngularJS 1.3.0-rc.5 开始,如果没有提供其他参数,orderBy过滤器(请参阅文档)将使用其项目自动对数组进行排序。

<li ng-repeat="item in items | orderBy">{{item}}</li>

JS Bin

1.3.0-rc.5 之前

过滤器orderBy(参见历史文档)也可以将函数作为第二个参数,其返回值将使用<,=>运算符进行比较。为此,您可以简单地使用angular.identity(请参阅文档):

$scope.identity = angular.identity;
<li ng-repeat="item in items | orderBy:identity">{{item}}</li>

JS Bin

于 2013-07-30T00:08:17.047 回答
5

您可以尝试以下。

<ul>
    <li ng-repeat="item in items | orderBy:'toString()'">{{item}}</li>
</ul>
于 2015-06-05T10:22:35.573 回答