Javascript KnockoutJS-为什么$root函数不';不在foreach内执行?

Javascript KnockoutJS-为什么$root函数不';不在foreach内执行?,javascript,knockout.js,Javascript,Knockout.js,我想为带有knockoutJS的表行设置备用颜色背景 如您所见,生成数据后,一切正常: 但是,请尝试删除任何联系人,例如第三行的。那么最后一行的不应该是红色的,但它是红色的。看起来没有执行rootcheck函数。为什么 编辑: 终于!它的工作原理是: 我不再看self.contacts().length,我也不再在添加新人后设置index=0。对于这种情况,您应该使用$index,而不是搞乱函数:顺便说一句,您的函数不会执行,因为knockout只寻找可观察到的更改。您的check函数不包含/

我想为带有knockoutJS的表行设置备用颜色背景

如您所见,生成数据后,一切正常:

但是,请尝试删除任何联系人,例如第三行的
。那么最后一行的
不应该是红色的,但它是红色的。看起来没有执行root
check
函数。为什么

编辑: 终于!它的工作原理是:


我不再看
self.contacts().length
,我也不再在添加新人后设置
index=0
。对于这种情况,您应该使用
$index
,而不是搞乱函数:
顺便说一句,您的函数不会执行,因为knockout只寻找可观察到的更改。您的check函数不包含/访问任何可观察项,因此当您从列表中删除某个项时,knockout不会重新评估css绑定。您是对的,但尝试添加并删除添加的行-您将看到颜色在行之间跳跃…您可以这样做,假设交替颜色是您在这里要做的,这并不是一个函数调用不能按预期工作的例子。这里它被应用到我知道我只能用纯CSS来做,但是为什么如果我用一些变量增量jsfiddle.net/j8c8aywe/6来做,它就不能按预期工作?因为假设我不是在表中,而是在嵌套的div中,这就是为什么我要问这个问题