2014-10-29 10 views
6

Mi piacerebbe ng-repeat ma solo dal secondo elemento dell'array fino all'ultimo. Ho provato a usareAngularJS: ng-repeat dal secondo indice

ng-repeat="entry in entries | filter: $index==0" 

ma questo non ha funzionato. Se tento di usare ng-if, come questo

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

sto ottenendo errore di inclusione.

Qual è la soluzione migliore? A proposito, la mia versione di AngularJS è la 1.1.5 perché la mia app è un plugin per Hawtio (che è ancora bloccato nella versione 1.1.5). Grazie.

risposta

16

Perché non basta:

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

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

+0

Userò il primo elemento da qualche altra parte in html, quindi questa potrebbe non essere un'opzione. – menorah84

+1

@ menorah84 sei sicuramente in grado di farlo: http://jsfiddle.net/10d6o1aq/1/ – Cherniv

+0

@ menorah84 non temere, è solo la copia a fette di un array originale in una vista – Cherniv

5

Si può provare questo:

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

Ecco il reference.

+2

Sì, come menzionato in seguito da Mukund, anche 'ng-hide =" $ first "' è valido. – denisazevedo

4

nascondere primo elemento utilizzando $first

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

C'è una soluzione più semplice nelle versioni più recenti di angolare (che non funzionerà per la domanda originale, data la loro restrizione su Angular versione 1.1.5, ma funzionerà per gli altri che si imbattono in questo post)

Il filtro "limitTo" supporta ora un "begin" argomento (docs):

{{ limitTo_expression | limitTo : limit : begin}} 

in modo da poter usare in questo modo in un ng-repeat:

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

Ciò significa che ng-repeat inizierà dall'indice 1 (anziché dall'indice di default 0) e continuerà per il resto della lunghezza dell'array di voci (che è inferiore a entries.length, ma limitTo gestirà proprio bene).

Problemi correlati