如何让 Angular 的ng-repeat
指令按照每个项目的实际值而不是每个项目的属性值对列表进行排序?
例如:
<ul>
<li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>
这是一个可以玩的小提琴:http : //jsbin.com/okatur/1/edit
我意识到我只能.sort()
在阵列上做,但这是我唯一的选择吗?
如何让 Angular 的ng-repeat
指令按照每个项目的实际值而不是每个项目的属性值对列表进行排序?
例如:
<ul>
<li ng-repeat="item in items | orderBy:'WHAT_GOES_HERE??'">{{item}}</li>
</ul>
这是一个可以玩的小提琴:http : //jsbin.com/okatur/1/edit
我意识到我只能.sort()
在阵列上做,但这是我唯一的选择吗?
从AngularJS 1.3.0-rc.5 开始,如果没有提供附加参数,orderBy
过滤器(请参阅文档)将使用其项自动对数组进行排序。
<li ng-repeat="item in items | orderBy">{{item}}</li>
所述orderBy
过滤器(见历史文档)还可以采取一个函数作为第二个参数,其返回值为将使用进行比较<
,=
和>
操作者。为此,您可以简单地使用angular.identity
(参见文档):
$scope.identity = angular.identity;
<li ng-repeat="item in items | orderBy:identity">{{item}}</li>
您可以尝试以下。
<ul>
<li ng-repeat="item in items | orderBy:'toString()'">{{item}}</li>
</ul>