有没有办法检查是否为页面区域调用applyBindings
?
似乎淘汰赛不喜欢在同一页面上多次调用applyBindings
时。
答案 0 :(得分:60)
Knockout 2.0有两个可用于此目的的功能。 ko.dataFor
和ko.contextFor
接受一个节点并返回可用于在该范围内绑定的Knockout数据(dataFor)或该范围内的整个绑定上下文(contextFor),其中包括{ {1}},$data
,$parent
和$parents
。
所以,你可以这样做:
$root
以下是一个示例:http://jsfiddle.net/rniemeyer/GaqGY/
但是,在正常情况下,您应该真正在页面上一次性调用var isBound = function(id) {
return !!ko.dataFor(document.getElementById(id));
};
。这取决于你想要完成的事情。请查看此答案,了解有关管理多个视图模型的方法的一些建议:Example of knockoutjs pattern for multi-view applications。
通常情况下,您会执行ko.applyBindings
,当<div data-bind="with: mySubModel">
被填充后,该区域就会出现并受到约束。