Domanda orderBy due campi (uno al contrario)


Vorrei ordinare un elenco di amici in base allo stato (primi in linea, non in linea dura) e in ordine alfabetico. Tutto quello che riesco a ottenere è:

  • Prime novità online / ordine alfabetico inverso
  • O primati offline / ordine alfabetico

Qui è plunker per esporre il mio problema


44
2017-11-29 16:43


origine


risposte:


Cambiare il orderBy filtra per questo:

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

Questo ordinerà in base allo stato discendente (con il prefisso - carattere), quindi il nome ascendente. Attualmente stai passando true per invertire l'ordinamento, che sta causando lo stato corretto (prima online), ma i nomi da invertire (cioè, discendente).

Se si desidera mantenere il booleano inverso, è possibile utilizzare orderBy:['status','-name']:true ma questo sembra meno chiaro di quello che sto facendo status discendente come mostrato in precedenza.


99
2017-11-29 16:49



C'è un'altra opzione per farlo, puoi avere più ordini da filtro in ng-repeat e quella linea:

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

sarà :

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

L'ultimo ordine è eseguito per primo e il secondo per ultimo, ecc ...

Ecco il mio plunkr: http://plnkr.co/edit/girPFzdi3Zx0yp0ASGVQ?p=preview


0
2018-04-18 14:40



Nell'esempio precedente di Angular 1.5.8 non funziona. È necessario applicare una logica diversa.

Sembra logico dall'ordine precedente. Viene applicato a quello successivo, quindi per ordinare il nome ASC e lo stato DESC l'ordine dei nomi deve essere riverito:

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

Ecco un esempio fisso: http://plnkr.co/edit/0ZFIftSgNkU9F03xJztG?p=preview


0
2017-11-24 11:23