2013-12-16 5 views
5

mam tablicę kontroler następującoJak odwrócić tablicę kątowego js bez tworzenia filtru

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

I stosowana ng powtarzania pokazać dane items,

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

Otrzymałem wynik jako rozkaz a, b, c. Chcę pokazać to w odwrotnej kolejności. oznacza to c, b, a bez zmiany jego kolejności w kontrolerze lub bez tworzenia filtra. Jak to zrobić? Sprawdź ten link

Odpowiedz

7

Aby uniknąć pisania niestandardowego filtra, sugeruję Gest, aby korzystać z tej składni:

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

Dokumentacja zakładać posortować tablicę obiektów, ale w Twoim przypadku nie są po prostu ciągi.

2

zawinąć ciągi w obiektach i korzystać orderby lub utworzyć nowy filtr:

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 
    }; 
}); 

i używać go tak:

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

Updated fiddle (Ja również zaktualizowane Dyrektywa ng-app, więc minął moduł "aplikacji".)

+0

Kiedy przechowywane mój 'items' użyłem' items.slice() reverse(); 'teraz jest odwrócone całkiem dobre. –

14

Zmierzyłem się z tym samym problemem, ale z szeregiem obiektów. To szybkie rozwiązanie sprawdziło się, ale używanie filtra jest najlepszą praktyką. .

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

http://bootply.com/SgVBZvZ708

+3

reverse() jest natywną funkcją javascript ... dlaczego uważasz to za "brudne rozwiązanie"? – sports