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

时间:2013-07-29 23:44:33

标签: javascript angularjs

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

例如:

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

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

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

2 个答案:

答案 0 :(得分:46)

自1.3.0-rc.5

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

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

JS Bin

1.3.0-rc.5之前

orderBy过滤器(请参阅historical documentation)也可以将函数作为第二个参数,其返回值将使用<=和{{进行比较1}}运算符。 您可以为此目的使用>(请参阅documentation):

angular.identity
$scope.identity = angular.identity;

JS Bin

答案 1 :(得分:4)

您可以尝试以下。

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