2014-10-09 20 views
9

Sono nuovo di angolari e cercando di effettuare le seguenti operazioni:AngularJS ngRepeat: come differenziare gli elementi pari/dispari?

<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> 

per il codice di cui sopra, sia ng-if sta passando. Dove sto sbagliando?

+0

indice è $ indice con angolare – Pascalz

+0

senza fortuna. È lo stesso risultato – batman

+1

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

risposta

16

Provare $even e $odd proprietà. Fare riferimento a documentation.

come:

<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

senza fortuna. È lo stesso :( – batman

+0

Assicurati di utilizzare Angular.js 1.2.0 o più recente. – gligoran

9

Non è necessario utilizzare ng-se per verificare se si tratta di un elemento di pari o dispari, tale funzionalità è incorporata già:

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

Un altro costruito -in funzione è ng-class che offre diverse opzioni per impostare in modo condizionale una classe css, qui sto usando la versione ternaria ma ci sono altri modi per usarlo anche.

Ecco un working example

Inoltre, ecco un good article spiegare di più su ng-class

+1

Funziona per me, ma in realtà non ottengo la dichiarazione. Suppongo che "$ pari" sia l'istruzione, ma perché la prima riga viene attivata come 'dispari', mentre l'istruzione è '$ pari'? (Trovando difficile spiegare questa domanda) –

+0

@JorisDecraecker Perché la dichiarazione dovrebbe essere: "$ pari? 'anche': 'dispari' "(significa che se anche, mettete la classe anche altrimenti dispari). Naturalmente potete usare la classe pari quando è dispari ma concordo sul fatto che la risposta potrebbe essere un po 'confusa. –

0

Prova questa in css:

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

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

Si potrebbe definire lo stile per il primo oggetto:

tr:first-child { 
    background: #84ace6 
} 
Problemi correlati