2012-06-27 8 views
35

Ho problemi a ottenere una classe css di riga alternativa applicata a un modello a eliminazione diretta con un contesto di bind foreach. Sto usando knockout 2.1 con la variabile di contesto $index disponibile.

Si tratta di che cosa è fonte di confusione:

mio modello

<li class="row" data-bind="css: { alt: $index%2 }"></li> 

risultati in nessun alt classi applicate, però:

<li class="row" data-bind="text: $index"></li> 

lavori correttamente e visualizza il numero di riga.

risposta

71

Ho lottato con questo per un paio di minuti e ho trovato che la questione non era in realtà stato coperto in quanto il nuovo binding context variables (come $index) era stato introdotto nel ko 2.1

L'errore che stavo facendo era che io semplicemente Dimentica che lo stesso $index è osservabile e deve essere scartato se lo si utilizza in un'espressione nell'attributo data-bind. vale a dire,

<li class="row" data-bind="css: { alt: $index%2 }"></li> 

dovrebbe diventare

<li class="row" data-bind="css: { alt: $index()%2 }"></li> 

woops :)

+0

Continuo a fare questo errore! – RichardTowers

+0

Stavo per chiedere e poi ho trovato la tua risposta! Grazie :) – Ryan

+0

stavo per impazzire su questo. – jes

12

Non fare alternano fila styling con Javascript, usare i CSS, che è il modo più efficiente :)

https://developer.mozilla.org/en-US/docs/CSS/:nth-child

+4

Mentre sono d'accordo con te, se stai provando a supportare

+1

entrambe queste risposte hanno valore. A seconda del contesto, ci sono molte ragioni per usare l'una o l'altra ed è bello vedere entrambe le opzioni qui e rende questa domanda una buona risorsa. questo è esattamente il modo in cui lo stack overflow è stato progettato per funzionare. –

Problemi correlati