1

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

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

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

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

我如何应用这个,使用两个视图模型,一个用于整个页面,另一个用于特定部分

4

2 回答 2

6

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

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

ko.virtualElements.allowedBindings.stopBinding = true;

然后使用:

        <!-- ko stopBinding: true -->
        <!-- /ko -->

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

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

于 2013-01-17T16:17:50.397 回答
0

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

于 2013-01-17T16:52:35.403 回答