我得到的是一个ASP.NET MasterPage/ContentPage,其中ContentPage利用UpdatePanel并将UpdateMode设置为“有条件”。这个ContentPage基本上是一个MultiView,它有3个视图:设置,确认和完成。我有导航按钮,点击后,转到服务器,做他们需要做的,最后更新UpdatePanel,以便它可以回来。我的问题在于我的JavaScript。对象字面和Sys.WebForms.PageRequestManager.getInstance()。add_endRequest问题
我有一个名为PAGE
以下全局文本对象:
PAGE = {
panel : undefined,
currentView: undefined,
buttons : {
all : undefined,
cont : undefined
},
views : {
setup : {},
confirm : {},
complete : {}
}
};
我PAGE.init()
功能如下:
PAGE.init = function() { console.log("PAGE.init() fired");
this.panel = $('div[id$="Panel_Page"]');
this.currentView = this.panel.find('input[id$="Hidden_CurrentView"]').val();
this.buttons.all = this.panel.find('input[type="submit"]');
this.buttons.cont = this.panel.find('input[id$="Button_Continue"]');
this.buttons.all.click(function() { PAGE.panel.hide(); });
switch (this.currentView) {
case "confirm" : this.views.confirm.init(); break;
case "complete" : this.views.complete.init(); break;
default : this.views.setup.init(); break;
}
};
最后,但并非最不重要的,这一切又踢off by:
// Fire events on initial page load.
PAGE.init();
// Fire events for partial postbacks.
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(PAGE.init);
我的问题是,当它第一次火灾Page.init()
一切都很好,但是,当你点击一个按钮,它立即引发的错误:遗漏的类型错误:无法设置属性未定义“所有”。现在我试图弄清楚这一点,但我不知所措。看起来好像ANY发生在PAGE
的根之外的嵌套对象字面值。像PAGE.panel
这样的直接属性工作得很好,但只要您需要访问PAGE.buttons.all
或PAGE.views.setup
,就会引发此错误。我从来没有见过这个。
有什么想法吗?
对不起,我迟到的反应,我一直在休假。我不确定在每次发送init()函数时如何失去我的引用。更不用说,面板甚至不在我的问题所在,因为按钮的基本属性是由于某种原因返回undefined。再看看底部的解释。也许它会更好地理解我在做什么。 –
@Scott - 你是否尝试过吸气剂来代替任何属性?只是想知道如果你不认为这是问题,或者你尝试了,它不工作,你知道这不是问题。每次我遇到类似的问题时,都是因为我失去了对节点的引用。是否可以发布一些更多的代码,以便我可以尝试在我的最后重现问题? – Brian
你缺少的是它不是关于引用DOM的属性。失去这种引用是针对那些在每次部分回发时都没有重新初始化的人,这在我的示例中最后一行代码中是明显的。我遇到的问题是我的对象字面属性'PAGE.buttons'变得不确定。 –