orderBy两个字段(一个是反向的)

时间:2013-11-29 16:43:48

标签: angularjs angularjs-ng-repeat

我想按状态(在线第一,离线持续)和按字母顺序订购朋友列表。我所能得到的只有:

  • 在线第一/反向字母顺序
  • 或离线第一/按字母顺序排列

这是plunker揭露我的问题

3 个答案:

答案 0 :(得分:103)

orderBy过滤器更改为:

orderBy:['-status','name']

这将按降序状态(通过为-字符添加前缀)排序,然后按升序名称排序。目前您正在通过true来反转排序,这会导致状态正确(首先在线),但要反转的名称(即,降序)。

如果你想保留反向布尔值,你可以使用orderBy:['status','-name']:true,但这似乎不仅仅是让status降序,如前所示。

答案 1 :(得分:0)

还有另一种选择,你可以在ng-repeat和那行中有多个orderBy过滤器:

<li class="friend" ng-repeat="friend in friends | orderBy:['status','name']:true">

将是:

<li class="friend" ng-repeat="friend in friends | orderBy:'name':false | orderBy:'status':true">

最后一个orderBy首先执行,倒数第二个等等......

这是我的傻瓜:http://plnkr.co/edit/girPFzdi3Zx0yp0ASGVQ?p=preview

答案 2 :(得分:0)

在Angular 1.5.8中,之前的示例不起作用。 必须应用不同的逻辑。

它看起来逻辑从之前的orderBy应用到下一个,所以为了排序名称ASC和状态DESC名称顺序必须被尊重:

<li class="friend" ng-repeat="friend in friends | orderBy:'name':true | orderBy:'status':true">

以下是修复示例:http://plnkr.co/edit/0ZFIftSgNkU9F03xJztG?p=preview