带有$ index绑定的备用行样式

Lel*_*son 35 javascript knockout-2.0 knockout.js

我无法使用foreach绑定上下文将替代行css类应用于挖空模板.我正在使用具有可用$index上下文变量的knockout 2.1 .

这有什么令人困惑的:

我的模板

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

但是,结果是没有alt应用任何类:

<li class="row" data-bind="text: $index"></li>
Run Code Online (Sandbox Code Playgroud)

正常工作并显示行号.

Lel*_*son 71

我挣扎了几分钟,发现自从新的绑定上下文变量(如$index)在knockout 2.1中引入后,这个问题并未真正被覆盖

我犯的错误是我忘记了它$index本身是一个可观察的,如果我们在data-bind属性中的表达式中使用它,则必须将其解包.即

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

应该成为

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

woops :)


小智 12

不要用Javascript做替代的行样式,使用CSS更方便:)

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

  • 虽然我同意你的意见,但如果你试图支持<IE9.0,那么这个伪选择器就不可用了.尽管如此,这个问题主要是为了帮助人们理解`$ index`上下文变量本身是一个可观察的.欢呼:) (4认同)