Knockout:如何检查绑定是否已经应用到页面区域

有没有办法来检查applyBindings是否被称为页面区域?

似乎淘汰赛不喜欢applyBindings在同一页面上调用。

Knockout 2.0有两个function,您可以用于此目的。 ko.dataForko.contextFor接受一个节点并返回可用于该范围绑定的Knockout数据(dataFor)或该范围的整个绑定上下文(contextFor),其中包括$data$parent$parents$root

所以,你可以做这样的事情:

 var isBound = function(id) { return !!ko.dataFor(document.getElementById(id)); }; 

这里是一个示例: http : //jsfiddle.net/rniemeyer/GaqGY/

但是,在正常情况下,您应该确实在页面上调用ko.applyBindings一次。 这取决于你试图完成什么。 看看这个答案,就如何pipe理多个视图模型提出一些build议: 多视图应用程序的knockoutjs模式的例子 。

通常情况下,你会做一个<div data-bind="with: mySubModel"> ,当mySubModel被填充时,那个区域就会出现并被绑定。