我目前正在开发一个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上的输入时,值为allways null
在我的_manageStructure.ascx中,我有一个动作链接,在点击时会在网页中呈现_editStructure。 当我在同一页面中执行此操作时,它不起作用,但如果我在新选项卡上打开它,它可以完美地运行...
答案 0 :(得分:0)
您可以传递第二个参数来定义要搜索数据绑定属性的文档的哪个部分。例如,ko.applyBindings(myViewModel,document.getElementById('someElementId'))。这会将激活限制为具有ID someElementId及其后代的元素,如果您希望拥有多个视图模型并将每个视图模型与页面的不同区域相关联,这将非常有用。