2014-12-25 14 views
40

voglio saltare la prima voce in ng-repeatSkip prima voce in ng-repeat

..first item here 

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines | filter:$index>0"> 
      ... 
     </li> 
</ul> 

non funziona, qualcosa di sbagliato qui?

Capisco che posso usare ng-if, ng-show per nascondere le cose ma non riesco proprio a capire perché il filtro non funzioni in 1.3.x in questo caso.

Grazie.

+1

'$ index' è una variabile impostata da' ng-repeat' sull'oscilloscopio. Non puoi fare riferimento al filtro che viene valutato prima che la direttiva inizi a fare qualcosa. Inoltre, non penso che questa sintassi sia supportata dal componente filtro. Comunque puoi usare un'espressione basata sulla funzione che prende 'index' come secondo argomento. –

+0

grazie per le tue informazioni. –

+0

Possibile duplicato di [AngularJS: ng-repeat dal secondo indice] (https://stackoverflow.com/questions/26624341/angularjs-ng-repeat-from-second-index) –

risposta

71
<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-if="$index > 0"> 
      ... 
     </li> 
</ul> 
+30

Un'altra alternativa è 'ng-if ="! $ prima "'. – bbrown

+0

questo è buono @bbrown – JohnB

28

Usa $ prima di questo:

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-hide="$first"> 
      ... 
     </li> 
</ul> 

Oppure,

<ul class="highlight-topright"> 
      <li ng-repeat="item in hpHeadlines" ng-if="!$first"> 
       ... 
      </li> 
    </ul> 
0

È possibile utilizzare ng-show o ng-if senza usarlo come un filtro. È più facile perché conosci l'indice che vuoi saltare.

Utilizzare i filtri in genere quando si desidera eseguire un'operazione che riguarda tutto l'array, ad esempio la formattazione, o parti che non si sa dove risiedono.

<ul class="highlight-topright"> 
     <li ng-repeat="item in hpHeadlines" ng-show="$index != 0"> 
      {{item.name}} 
     </li> 
    </ul> 

JS Fiddle

0

È possibile utilizzare ng-spettacolo, invece, in questo modo:

<ul class="highlight-topright"> 
    <li ng-repeat="item in hpHeadlines" ng-show="$index > 0"> 
     ... 
    </li> 
</ul> 

Oppure si può usare ng-se direttiva nel caso in cui non si desidera aggiungere invisibile elementi dom.

12

È inoltre possibile utilizzare il filtro limitTo.

Come indice negativo, inizia indica un offset dalla fine dell'input. Il valore predefinito è 0.

<li ng-repeat="item in hpHeadlines | limitTo: 1 - hpHeadlines.length"> 
    ... 
</li> 
1

forse sono in ritardo di rispondere a questa. Ma solo per i neofiti, sto fornendo una soluzione. Come si vuole saltare il primo record, in modo da poter utilizzare sia indice di $ o $ prima per raggiungere, come illustrato di seguito:

<li ng-repeat="item in hpHeadlines" ng-if="$index">  OR 

<li ng-repeat="item in hpHeadlines" ng-if="!($first)"> 

Come si può vedere, in entrambi, ng-se è saltare '0' valore .

Problemi correlati