Knockout JS在多个局部视图中包含模型

时间:2012-12-07 21:13:21

标签: asp.net-mvc-2 knockout.js partial-views knockout-2.0 knockout-mvc

我正在页面中加载4个部分视图。包含不同div和每个局部视图中所有局部视图的主页面都有自己的挖空模型。我遇到的问题是单个淘汰模型不能绑定文本字段的值,什么不能。

我希望将页面分开,这样主页就不会那么杂乱,并且与部分视图紧密耦合。这基本上是以前完成的这4页的摘要。

似乎我无法将淘汰模型拉出来,因为他们需要来自控制器的信息来填充局部视图,我不想将部分视图拉入此页面。

基本上我想用他们自己的淘汰模型加载部分视图并具有所需的功能。

2 个答案:

答案 0 :(得分:0)

听起来好像在你的情况下,你会想要使用ko.applyBindings的第二个参数。

第二个参数允许您传递要用作要绑定的根元素的DOM元素。

因此,如果您将部分视图加载到以下元素中:

<div id="one">
...
</div>
<div id="two">
....
</div>

您可以将不同的视图模型绑定到每个容器,如:

ko.applyBindings(oneModel, document.getElementById("one"));

ko.applyBindings(twoModel, document.getElementById("two"));

答案 1 :(得分:0)

在每个局部视图中,将一些JavaScript放在页面的最底部。

<script type="text/javascript">
    ko.applyBindings(viewModelObject, document.getElementById("someDivId")); 
</script>

这将在适当的时间应用绑定。否则,由于视图加载的异步方式,绑定将不起作用。

注意:viewModelObject应该在主视图中定义,以及一般的ko包含文件。