为了避免在同一个DOM元素上多次调用applyBindings,我将各种viewmodel包装在一个observable中。然后只需将观察结果更改为我想看到的任何视图模型,BAM ......就可以了。
直到我做这样的事情:
<div data-bind="if:$data">
...some bindings in here
</div>
当我更改视图模型时,任何“if:$ data”块内的绑定都不会更新。
这是一个真正证明这一点的小提琴:http://jsfiddle.net/btrauma8/2TxME/
答案 0 :(得分:2)
这可以在KO 2.2之前正常工作。在2.2中,我们通过仅在值实际在truthy / falsy之间更改时重新呈现该部分,使if
和ifnot
更有效。
在很多情况下,人们会对if: items().length
之类的东西进行绑定,并且每次添加项目时都会重新渲染整个部分。
在您的情况下,只需使用with
绑定而不是if
,您就可以轻松克服这个问题。因为,你绑定$data
,它实际上不会改变上下文,并会给你你想要的结果。