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

时间:2013-01-17 16:13:57

标签: knockout.js

我知道ko.applyBindings可以使用第二个参数,它将绑定到

的DOM元素

但我的情况不同我有一个大页面我想通过使用为它指定一个viewmodel  ko.applyBindings(bigModel)

然后有一个小侧边栏部分位于页面中间我想使用ko.applyBindings(smallModel, $("#sidebar")[0])

为其指定另一个视图模型

当我在小#sidebar部分中使用敲除属性时,它会抛出错误Unable to parse bindings但它仍会绑定值(例如<span 'text:propertyOnSmallModel' />)i之后我尝试添加这些<{1}}上的属性为空属性,它没有扔掉。

如何应用此功能,请为整个页面使用两个视图模型,为特定部分使用另一个视图模型

2 个答案:

答案 0 :(得分:4)

您可以使用此处理程序将Knockout.js告诉stop binding

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

ko.virtualElements.allowedBindings.stopBinding = true;

然后使用:

        <!-- ko stopBinding: true -->
        <!-- /ko -->
在您的网页中

html评论以停止绑定。

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

答案 1 :(得分:0)

我没有看到有子视图模型的任何问题。添加侧边栏视图模型作为父视图模型的属性。使用'with'绑定将子视图模型绑定到侧边栏元素。