2

我目前正在开发一个 Web 应用程序,其中包含一些需要由 Knockout 绑定的 UI 控件。结构如下:MainPage.aspx -> _manageStructures.ascx -> _editStructure.ascx;所有这些都呈现在同一个页面中,通过 AJAX 添加新组件。MainPage 绑定工作完美,但 _editStructure 似乎没有获得绑定值。我所做的是创建一个 ModelView.js 文件,其中包含我在应用程序中需要的两个 ViewModel,然后是一个返回全局对象的“NameSpace”函数。

function v1 (name){
 this.name = ko.observable(name);
}
function v2(views){
 this.views = ko.observable(views);
}

function NameSpace() { }

var global = new NameSpace();

所以,当我需要应用一些绑定时,我要做的是:

var v  =new V1("luis");
global.v1 = v;

ko.applyBindings(global);

然后,在我的 HTML 上,我所做的是:

<input data-bind="value: v1.name" />

现在,问题是我只能让它在主页上工作。

当我尝试将 V2 值绑定到我的 EditPage 上的输入时,该值始终为空

在我的 _manageStructure.ascx 中,我有一个操作链接,单击该链接将在网页中呈现 _editStructure。当我在同一页面中执行此操作时,它不起作用,但如果我在新选项卡上打开它,它会完美运行......

4

1 回答 1

0

您可以传递第二个参数来定义要在文档的哪个部分搜索数据绑定属性。例如,ko.applyBindings(myViewModel, document.getElementById('someElementId'))。这将激活限制为 ID 为 someElementId 的元素及其后代,如果您希望拥有多个视图模型并将每个模型与页面的不同区域相关联,这将非常有用。

于 2012-11-19T11:28:18.937 回答