2014-10-29 7 views
6

Chciałbym powtórzyć ng, ale tylko z drugiego elementu tablicy do ostatniego. Podjęto próbę użyciaAngularJS: ng-repeat z drugiego indeksu

, ale ta nie działała. Jeśli będę próbować używać ng-if, jak to

ng-repeat="entry in entries" ng-if="$index != 0" 

Dostaję błąd w transkluzji.

Jakie jest najlepsze rozwiązanie? BTW, moja wersja AngularJS to 1.1.5, ponieważ moja aplikacja jest wtyczką do Hawtio (która wciąż tkwi w wersji 1.1.5). Dzięki.

Odpowiedz

16

Dlaczego nie po prostu:

ng-repeat="entry in entries.slice(1,entries.length)" 

Fiddle: http://jsfiddle.net/10d6o1aq/

+0

Użyję pierwszego elementu gdzieś indziej w html, więc może to nie być opcja. – menorah84

+1

@ menorah84 na pewno możesz to zrobić: http://jsfiddle.net/10d6o1aq/1/ – Cherniv

+0

@ menorah84 nie bój się, to tylko pokrojona kopia oryginalnej tablicy w widoku – Cherniv

5

Można spróbować to:

ng-repeat="entry in entries" ng-show="!$first" 

Oto reference.

+2

Tak, jak Mukund wspomniał później, 'ng-hide =" $ first "' jest również ważny. – denisazevedo

4

ukryć pierwszy element przy użyciu $first

<div ng-repeat="entry in entries" ng-hide="$first"> 
    ... 
</div> 
2

Jest prostsze rozwiązanie w nowszych wersjach kątowej (co nie będzie działać w odniesieniu do pierwotnego pytania, zważywszy na ich ograniczenia dotyczące Angular wersji 1.1.5, ale będzie działać w przypadku innych osób napotykających ten post)

Filtr "limitTo" obsługuje teraz "zaczynają" argument (docs):

{{ limitTo_expression | limitTo : limit : begin}} 

więc można go używać jak to w NG-repeat:

ng-repeat="entry in entries | limitTo: entries.length : 1" 

oznacza to, że ng-repeat rozpocznie się od indeksu 1 (zamiast domyślnego indeksu 0) i będzie kontynuowane dla pozostałej długości tablicy pozycji (która jest mniejsza niż entries.length, ale limitTo poradzi sobie z tym dobrze).

Powiązane problemy