两种视图模型,一种用于整个页面,另一种用于小区域

Nad*_*edr 1 knockout.js

我知道 ko.applyBindings可以接受第二个参数,它将是绑定到的DOM元素

但是我的情况不同,我有一个大页面,我想通过使用为其指定一个视图模型 ko.applyBindings(bigModel)

然后在页面中间有一个小的侧边栏部分,我想通过使用为其指定另一个视图模型 ko.applyBindings(smallModel, $("#sidebar")[0])

当我在小#sidebar部分使用敲除来使用有界属性时,会引发错误,Unable to parse bindings但仍绑定值(例如<span 'text:propertyOnSmallModel' />),之后我尝试将这些属性添加为空属性bigModel,但没有抛出。

我如何应用此方法,使用两种视图模型,一种用于整个页面,另一种用于特定的部分

Pau*_*tti 5

您可以使用以下处理程序告诉Knockout.js 停止绑定

ko.bindingHandlers.stopBinding = {
    init: function ()
    {
        return { controlsDescendantBindings: true };
    }
};

ko.virtualElements.allowedBindings.stopBinding = true;
Run Code Online (Sandbox Code Playgroud)

然后使用:

        <!-- ko stopBinding: true -->
        <!-- /ko -->
Run Code Online (Sandbox Code Playgroud)

网页中的html注释停止绑定。

因此,您将较大的模型绑定到整个页面,使用上面的html注释停止将该模型绑定到您的特定部分。