Knockout:如何检查绑定是否已经应用到页面区域
有没有办法来检查applyBindings
是否被称为页面区域?
似乎淘汰赛不喜欢applyBindings
在同一页面上调用。
Knockout 2.0有两个function,您可以用于此目的。 ko.dataFor
和ko.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
被填充时,那个区域就会出现并被绑定。