orderBy两个字段(一个反向)

我想按状态(在线第一,离线最后)和按字母顺序排列朋友列表。 我设法得到的是:

  • 在线优先/颠倒字母顺序
  • 或脱机第一次/按字母顺序

这里是暴露暴露我的问题

orderByfilter更改为:

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

这将按降序排列(通过前缀-字符),然后升序名称。 目前,你传递true的扭转sorting,这是导致状态是正确的(在线第一),但名称要颠倒(即下降)。

如果你想保留反向布尔值,你可以使用orderBy:['status','-name']:true但是这并不像前面所说的那样只是降低status

还有另一个选项可以做到这一点,你可以在ng-repeat中有多个orderByfilter,那一行:

 <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执行第一次和倒数第二等…

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

在Angular 1.5.8之前的例子不起作用。 不同的逻辑必须被应用。

它看起来像先前orderBy的逻辑被应用到下一个,所以为了sorting名称ASC和状态DESC名称的顺序必须被反悔:

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

这里是固定的例子: http : //plnkr.co/edit/0ZFIftSgNkU9F03xJztG?p=preview