2012-06-27 11 views
35

Tôi gặp sự cố khi nhận một lớp css thay thế được áp dụng cho mẫu loại trực tiếp với ngữ cảnh ràng buộc foreach. Tôi đang sử dụng loại trực tiếp 2.1 với biến ngữ cảnh $index có sẵn.

Đây là whats khó hiểu:

Template My

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

kết quả trong không alt lớp học đang được áp dụng, tuy nhiên:

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

công trình đúng và hiển thị số liên tiếp.

Trả lời

71

tôi vật lộn với điều này cho một vài phút và phát hiện ra rằng câu hỏi này vẫn chưa thực sự được bao phủ kể từ khi mới binding context variables (như $index) đã được giới thiệu trong knockout 2.1

Sai lầm tôi đã làm là tôi chỉ đơn giản quên rằng $index chính nó là một quan sát, và phải được unwrapped nếu chúng ta đang sử dụng nó trong một biểu thức trong thuộc tính data-binding. tức là,

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

nên trở thành

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

woops :)

+0

Tôi tiếp tục mắc lỗi này! – RichardTowers

+0

Chỉ là về để hỏi và sau đó tìm thấy câu trả lời của bạn! Cảm ơn :) – Ryan

+0

Tôi sắp phát điên lên cái này. – jes

12

Đừng làm styling hàng xen kẽ với Javascript, CSS sử dụng đó là cách hiệu quả hơn :)

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

+4

Trong khi tôi đồng ý với bạn, nếu bạn đang cố gắng hỗ trợ

+1

cả hai câu trả lời đều có giá trị. tùy thuộc vào ngữ cảnh, có nhiều lý do để sử dụng cái này hay cái kia và thật tốt khi thấy cả hai tùy chọn này ở đây và nó làm cho câu hỏi này trở thành một nguồn tốt. đây chính xác là cách tràn ngăn xếp được dự định hoạt động. –