我知道ko.applyBindings
可以使用第二个参数,它将绑定到
但我的情况不同我有一个大页面我想通过使用为它指定一个viewmodel
ko.applyBindings(bigModel)
然后有一个小侧边栏部分位于页面中间我想使用ko.applyBindings(smallModel, $("#sidebar")[0])
当我在小#sidebar
部分中使用敲除属性时,它会抛出错误Unable to parse bindings
但它仍会绑定值(例如<span 'text:propertyOnSmallModel' />
)i之后我尝试添加这些<{1}}上的属性为空属性,它没有扔掉。
如何应用此功能,请为整个页面使用两个视图模型,为特定部分使用另一个视图模型
答案 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'绑定将子视图模型绑定到侧边栏元素。