applyBindings是applyBindingsToNodeAndDescendantsInternal(这是所有神奇之处)的一个薄包装,如果不提供节点,它将使用window.document.body
调用applyBindings(viewModel)和applyBinding(viewMode,rootNode)之间没有区别,除非您有非常大的DOM并且只想绑定一小部分。在这种情况下,使用第二个参数,并且Knockout在初始设置时要扫描的内容会少很多。
绑定到位后,它们会对可观察到的更改做出本地反应,而不像AngularJS这样的框架可能会扫描整个DOM以查找更改。此时,根节点无关紧要。
ko.applyBindings = function (viewModel, rootNode) {
if (rootNode && (rootNode.nodeType !== 1) && (rootNode.nodeType !== 8))
throw new Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
rootNode = rootNode || window.document.body; // Make "rootNode" parameter optional
applyBindingsToNodeAndDescendantsInternal(viewModel, rootNode, true);
};