我想知道是否可以使用Knockout.js的ko.applyBindings()
多次以不同的ViewModels绑定到页面的一个部分。 举例来说,假设我有这样的:
<div id="foo">...</div>
...
ko.applyBindings(new PageViewModel());
ko.applyBindings(new PartialViewModel(), $('#foo')[0]);
我现在应用两个视图模型绑定<div id="foo>
这是合法的吗?
我想知道是否可以使用Knockout.js的ko.applyBindings()
多次以不同的ViewModels绑定到页面的一个部分。 举例来说,假设我有这样的:
<div id="foo">...</div>
...
ko.applyBindings(new PageViewModel());
ko.applyBindings(new PartialViewModel(), $('#foo')[0]);
我现在应用两个视图模型绑定<div id="foo>
这是合法的吗?
你不想叫ko.applyBindings上多次相同的元素。 最好的情况下,这些元素会做更多的工作比必要的更新的时候,更糟糕的情况下,你将有多个事件处理程序烧制相同的元素。
有处理这种类型的东西,在这里详细介绍几种选择: knockoutjs模式的示例多视图的应用
如果你真的需要在内容的途中,你想打电话以后应用绑定的“孤岛”,那么你可以使用这里描述的技术: http://www.knockmeout.net/2012/05/quick-tip -skip-binding.html
这是实现JqueryMobile-SPA时谈到一个共同的路障。 该方法:ko.applyBindings( viewmode
, root dom element
)接受两个参数。 第二个参数来帮助时,您有多个虚拟机在你的页面。
例如 :
ko.applyBindings(model1, document.getElementById("view1"));
ko.applyBindings(model2, document.getElementById("view2"));
其中厂景和视图2是该模型中的根DOM元素。 对于JqueryMobile-SPA这将是相应的模型页面ID。
要做到这一点,最好的方法是使用“用”结合构建要绑定的局部视图模型中的股利。 您可以在此找到它拨弄
<div data-bind="with: model">
<p data-bind="text: name"></p>
</div>
<div data-bind="with: anothermodel">
<p data-bind="text: name"></p>
</div>
var model = {
name: ko.observable('somename'),
}
var anothermodel = {
name: ko.observable('someanothername'),
}
ko.applyBindings(model);
还检查了“与”装订文档在淘汰赛现场,看一个AJAX回调-部分装订场景。
我的英语很糟糕.... =)
我用萨米加载局部视图,和淘汰赛模型绑定,我尝试使用ko.cleanNode
但清洁我的所有绑定,所有的DOM节点已经改变的时候有一个绑定,属性__ko__
聚集,然后我删除该属性与此代码和作品!, '#main'
是我的节点。
var dom = dom || $("#main")[0];
for (var i in dom) {
if (i.substr(0, 6) == "__ko__") {
delete (dom[i]);
break;
}
}
使用后Ggle译者:
我用萨米为局部视图负荷,淘汰赛为模型绑定,我尝试使用ko.cleanNode但清洁我的所有绑定,所有的DOM节点已经改变,当他们有一个绑定, 高聚集的属性,然后我除去该属性与此代码,和作品!“#main”是我的节点。