2014-10-09 15 views
9

Ich bin neu in Winkel- und versuchen, Folgendes zu tun:AngularJS ngRepeat: Wie unterscheidet man gerade/ungerade Elemente?

<tr data-ng-repeat="element in awesomeThings"> 
<div ng-if="$index %2 == 0"> 
    <td class="even"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
<div ng-if="$index %2 != 0"> 
    <td class="odd"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
</tr> 

für den obigen Code, beide ng-if vorbei ist. Wo mache ich Fehler?

+0

Index $ index mit Winkel – Pascalz

+0

kein Glück:

tr:nth-child(even) { background: #CCC } tr:nth-child(odd) { background: #FFF } 

Sie Stil für den ersten Punkt definieren könnten. Es ist das gleiche Ergebnis – batman

+1

https://docs.angularjs.org/api/ng/directive/ngClassOdd –

Antwort

16

Versuchen Sie $even und $odd Eigenschaften. Siehe die documentation.

Like:

<tr data-ng-repeat="element in awesomeThings"> 
<div ng-if="$even"> 
    <td class="even"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
<div ng-if="$odd"> 
    <td class="odd"> 
     <a href="#"> 
      {{element}} 
     </a> 
    </td> 
</div> 
</tr> 
+0

kein Glück. Es ist das gleiche :( – batman

+0

Stellen Sie sicher, dass Sie Angular.js 1.2.0 oder neuer verwenden. – gligoran

9

Sie brauchen nicht ng-wenn verwenden um zu überprüfen, ob es eine gerade oder ungerade Element ist, wird diese Funktionalität Built-in bereits:

<tr ng-repeat="element in awesomeThings"> 
     <span ng-class="$even ? 'odd' : 'even'">{{element}}</span> 
    </tr> 

Ein weiteres gebaut -in Feature ist ng-class das gibt Ihnen mehrere Optionen, um eine CSS-Klasse bedingt einzustellen, hier verwende ich die ternäre Version, aber es gibt andere Möglichkeiten, es auch zu verwenden.

Hier ist ein working example

Auch hier ist ein good article erklärt mehr über ng-class

+1

Funktioniert für mich, aber ich bekomme nicht wirklich die Aussage. Ich nehme an, die "$ even" ist die Aussage, aber Warum wird die erste Zeile als 'ungerade' ausgelöst, während die Anweisung '$ even' ist? (Es ist schwierig, diese Frage zu erklären) –

+0

@JorisDecraecker Weil die Anweisung lauten sollte: "$ even? 'even': 'odd' "(was bedeutet, wenn sogar, setzen Sie die Klasse auch sonst ungerade). Natürlich können Sie die gerade Klasse als seltsam verwenden, aber ich stimme darin überein, dass die Antwort ein wenig verwirrend sein könnte. –

0

dies in CSS-Versuche:

tr:first-child { 
    background: #84ace6 
} 
Verwandte Themen