包含在可观察中的淘汰视图模型

时间:2013-02-14 18:05:07

标签: view model knockout.js observable

为了避免在同一个DOM元素上多次调用applyBindings,我将各种viewmodel包装在一个observable中。然后只需将观察结果更改为我想看到的任何视图模型,BAM ......就可以了。

直到我做这样的事情:

<div data-bind="if:$data">
...some bindings in here
</div>

当我更改视图模型时,任何“if:$ data”块内的绑定都不会更新。

这是一个真正证明这一点的小提琴:http://jsfiddle.net/btrauma8/2TxME/

1 个答案:

答案 0 :(得分:2)

这可以在KO 2.2之前正常工作。在2.2中,我们通过仅在值实际在truthy / falsy之间更改时重新呈现该部分,使ififnot更有效。

在很多情况下,人们会对if: items().length之类的东西进行绑定,并且每次添加项目时都会重新渲染整个部分。

在您的情况下,只需使用with绑定而不是if,您就可以轻松克服这个问题。因为,你绑定$data,它实际上不会改变上下文,并会给你你想要的结果。