2012-06-27 7 views
35

Mam problem z uzyskaniem kolejnej klasy css z wierszem alternatywnym zastosowanej do szablonu z szablonem wykluczającym foreach. Używam nokautu 2.1 z dostępną zmienną kontekstową $index.

To co jest mylące:

Moja Szablon

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

skutkuje żadnym alt klas stosowane, jednakże:

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

działa prawidłowo i wyświetla liczbę wierszy.

Odpowiedz

71

Walczyłem z tym przez kilka minut, a okazało się, że kwestia ta nie była naprawdę zostały pokryte od nowa binding context variables (jak $index) został wprowadzony w nokaut 2,1

Pomyłka robiłem było to, że po prostu Zapomniałem, że samo $index jest możliwe do zaobserwowania i musi być rozpakowane, jeśli używamy go w wyrażeniu w atrybucie związanym z danymi. tj

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

powinna stać

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

woops :)

+0

Ciągle popełniam ten błąd! – RichardTowers

+0

Właśnie chciałem zapytać, a następnie znalazłem odpowiedź! Dzięki :) – Ryan

+0

Już miałem zwariować na tym. – jes

12

Nie rób alternatywny rząd stylizacji z JavaScript, użyć CSS, który jest o wiele bardziej wydajny :)

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

+4

Chociaż zgadzam się z tobą, jeśli próbujesz obsługiwać

+1

obie te odpowiedzi mają wartość. w zależności od kontekstu istnieje wiele powodów, aby użyć jednego lub drugiego i dobrze jest zobaczyć obie te opcje tutaj i to sprawia, że ​​to pytanie jest dobrym źródłem. Właśnie tak miało działać działanie przepełnienia stosu. –