wake-up-neo.com

orderBy zwei Felder (eins umgekehrt)

Ich möchte eine Freundesliste nach Status (Online-Firsts, Offline-Lasts) und in alphabetischer Reihenfolge bestellen. Alles, was ich schaffe, ist:

  • Online erste/umgekehrte alphabetische Reihenfolge
  • Oder offline erste/alphabetische Reihenfolge

Hier ist plunker , um mein Problem aufzudecken

45
JMaylin

Ändern Sie den orderBy-Filter wie folgt:

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

Dies wird nach absteigendem Status (durch Voranstellen des --Zeichens) und dann aufsteigendem Namen sortiert. Derzeit übergeben Sie true, um die Sortierung umzukehren. Dies führt dazu, dass der Status korrekt ist (zuerst online), die Namen jedoch umgekehrt werden (d. H. Absteigend).

Wenn Sie den umgekehrten Booleschen Wert beibehalten möchten, können Sie orderBy:['status','-name']:true verwenden. Dies scheint jedoch weniger klar als die Änderung von status, wie zuvor gezeigt.

102
Ahmad Mageed

In Angular 1.5.8 funktioniert das vorige Beispiel nicht . Es muss eine andere Logik angewendet werden.

Es sieht so aus, als würde die Logik aus der vorherigen Reihenfolge aussehen. Sie wird auf die nächste Reihenfolge angewendet. Um den Namen ASC und den Status zu sortieren, muss die Reihenfolge der DESC-Namen geändert werden:

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

Hier ist ein festes Beispiel: http://plnkr.co/edit/0ZFIftSgNkU9F03xJztG?p=preview

0
nemanjabu

Es gibt eine andere Option, um dies zu tun. Sie können mehrere OrderBy-Filter in ng-repeat und diese Zeile verwenden:

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

wird sein :

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

Der letzte Auftrag wird zuerst und der vorletzte ausgeführt.

Hier ist mein Plunkr: http://plnkr.co/edit/girPFzdi3Zx0yp0ASGVQ?p=preview

0
Allenile