在Angular ng-repeat中的orderBy数组项值

tuf*_*uff 30 javascript angularjs

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

例如:

<ul>
    <li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

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

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

Bla*_*ole 48

自1.3.0-rc.5起

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

<li ng-repeat="item in items | orderBy">{{item}}</li>
Run Code Online (Sandbox Code Playgroud)

JS Bin

在1.3.0-rc.5之前

所述orderBy过滤器(见历史文档)还可以采取一个函数作为第二个参数,其返回值为将使用进行比较<,=>操作者.您可以为此目的简单地使用angular.identity(参见文档):

$scope.identity = angular.identity;
Run Code Online (Sandbox Code Playgroud)
<li ng-repeat="item in items | orderBy:identity">{{item}}</li>
Run Code Online (Sandbox Code Playgroud)

JS Bin


小智 5

您可以尝试关注。

<ul>
    <li ng-repeat="item in items | orderBy:'toString()'">{{item}}</li>
</ul>
Run Code Online (Sandbox Code Playgroud)