1

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

直到我做这样的事情:

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

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

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

4

1 回答 1

2

这在 KO 2.2 之前可以正常工作。在 2.2 中,我们通过仅在值实际在真/假之间变化时重新渲染部分来提高效率ififnot

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

在您的情况下,您可以通过使用with绑定而不是if. 由于您正在绑定$data,因此它实际上不会更改上下文,而是会为您提供您所追求的结果。

于 2013-02-14T18:24:28.403 回答