2013-12-16 7 views
5

Sto avendo un array controller come segueCome invertire una matrice in js angolari senza creare un filtro

function FooController($scope) { 
    $scope.items = ["a","b","c"]; 
} 

ho usato ng-repeat per mostrare i dati in items,

<div ng-app> 
    <div ng-controller="FooController"> 
     <ul ng-repeat="item in items"> 
      <li>{{item}}</li> 
     </ul> 
    </div> 
</div> 

Ho ottenuto il risultato come un ordine, b, c. Voglio mostrarlo in ordine inverso. ciò significa c, b, a senza modificare l'ordine nel controller o senza creare un filtro. Come farlo? Controllare questo link

risposta

7

Per evitare la scrittura di un filtro personalizzato, gest di utilizzare questa sintassi:

<ul ng-repeat="item in items | orderBy:'-toString()'"> 

La documentazione assumere a risolvere una serie di oggetti, ma nel tuo caso ci sono le stringhe solo pianura.

2

Avvolgere le corde negli oggetti e utilizzare orderBy o creare un nuovo filtro:

angular.module("app",[]) 
.filter("reverse", function(){ 
    return function(items){ 
     return items.slice().reverse(); // Create a copy of the array and reverse the order of the items 
    }; 
}); 

e usarlo in questo modo:

<ul ng-repeat="item in items|reverse"> 

Updated fiddle (Ho anche aggiornato il direttiva ng-app quindi viene passato il modulo "app".)

+0

Quando ho conservato il mio '' degli articoli che ho usato 'items.slice() REVERSE();' ora è invertito abbastanza bene. –

14

Ho affrontato lo stesso problema, ma con una serie di oggetti. Questa soluzione rapida ha funzionato per me, ma l'utilizzo del filtro è la migliore pratica. .

data-ng-repeat="item in items.slice().reverse()"

http://bootply.com/SgVBZvZ708

+3

reverse() è una funzione javascript nativa ... perché la consideri una "soluzione sporca"? – sports

Problemi correlati