2014-12-25 17 views
40

Ich mag hier das erste Element in der falschen ng-repeatWeiter erstes Element in ng-repeat

..first item here 

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

es nicht funktioniert, etwas überspringen?

Ich verstehe, dass ich ng-if, ng-show verwenden kann, um Dinge zu verbergen, aber ich kann einfach nicht verstehen, warum der Filter in diesem Fall nicht in 1.3.x funktioniert.

Danke.

+1

'$ index' ist eine Variable, die durch 'ng-repeat' auf dem Oszilloskop festgelegt wird. Sie können es nicht über den Filter referenzieren, der ausgewertet wird, bevor die Direktive irgendetwas zu tun beginnt. Ich glaube auch nicht, dass diese Syntax von der Filterkomponente unterstützt wird. Sie können jedoch einen auf Funktionen basierenden Ausdruck verwenden, der 'index' als zweites Argument verwendet. –

+0

danke für deine Info. –

+0

Mögliches Duplikat von [AngularJS: ng-Wiederholung aus dem zweiten Index] (https://stackoverflow.com/questions/26624341/angularjs-ng-repeat-from-second-index) –

Antwort

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

Eine andere Alternative ist 'ng-if ="! $ zuerst "'. – bbrown

+0

dieser ist gut @bbrown – JohnB

28

Verwenden $ zuerst für dieses:

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

Oder

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

können Sie ng-show oder ng-if verwenden, ohne sie als Filter zu verwenden. Es ist einfacher, weil Sie den Index kennen, den Sie überspringen möchten.

Verwenden Sie Filter in der Regel, wenn Sie etwas tun möchten, das das gesamte Array betrifft, z. B. Formatierung oder Teile, von denen Sie nicht wissen, wo sie sich befinden.

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

JS Fiddle

0

Sie können ng-Show stattdessen wie folgt verwenden:

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

Oder Sie verwenden ng-wenn Richtlinie für den Fall, Sie wollen nicht unsichtbar hinzufügen dom Elemente.

12

Sie können auch den Filter limitTo verwenden.

Als negativer Index zeigt begin einen Offset vom Ende des Eingangs an. Der Standardwert ist 0.

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

Vielleicht bin ich zu spät, dies zu beantworten. Aber gerade für Neulinge biete ich Lösung an. Wie Sie den ersten Datensatz überspringen, so dass Sie entweder $ Index oder $ zuerst für das Erreichen verwenden können, wie unten dargestellt:

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

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

Wie man sehen kann, in beide ng-wenn das Überspringen ‚0‘ Wert .