如何阻止knockout.js绑定评估子元素

Ara*_*and 18 data-binding elements knockout.js

使用knockout,当你调用ko.applyBinding(viewModel, "divId")它时,会通过你绑定的元素的子节点("divId")进行递归绑定.我想在子节点停止此评估.有没有办法做到这一点?

之所以...

我想将整个页面绑定到导航视图模型,这将处理基本布局和...微笑...导航.在各个页面上,我想将某些区域绑定到不是导航视图模型属性的不同视图模型.目前,如果我这样做,我得到"无法解析绑定"错误,因为导航视图模型没有所需的属性.如果我可以阻止绑定走下dom,我可以单独绑定这些项目.

RP *_*yer 37

您可以通过多种方式进行此操作.通常,您可以将多个"子"视图模型添加到主视图模型,然后使用with实际视图模型的各个区域上的绑定来绑定它们.

技术上可以做你想做的事.您可以创建一个自定义绑定,告诉KO它将处理绑定子项本身.它看起来像:

ko.bindingHandlers.stopBindings = {
    init: function() {
        return { controlsDescendantBindings: true };
    }  
};
Run Code Online (Sandbox Code Playgroud)

当你把它放在一个元素上时,KO会忽略这些孩子.然后,您可以使用不同的视图模型在此元素的子项上调用ko.applyBindings.

示例:http://jsfiddle.net/rniemeyer/tWJxh/

但通常情况下,您可以使用with绑定在主视图模型下使用多个视图模型.