这花了我一段时间。很久了。我一次与两个问题作斗争(循环依赖,通过重构修复,这个问题)。要将这个问题转化为JSFiddle需要大量的工作......但我认为这是值得的。 所以:
我定义了三个小部件:
r.AppMainScreen - 这是主应用程序的小部件。简单:只是一堆标签,以及一个包含一个简单按钮的按钮:
// SUbmit form
this.form.onSubmit = function(e){
e.preventDefault();
console.log("HERE");
dialog = new r.RetypePasswordDialog();
dialog.show();
return false;
}
非常无趣。
r.RetypePasswordDialog() - 一个模板化的小部件,代表一个对话框。唯一有趣的是:
< input name="password" id="${id}_password" data-dojo-attach-point="password" data-dojo-type="app.ValidationPassword" />
这是一个简单的自定义窗口小部件,在此文件中定义,用于验证。注意:我知道在这个小工作中有一个子类没有意义。请记住,这是示例。
增强的ValidationTextBox,带有一些额外的验证。
如果单击按钮,则会显示:
Uncaught Error: Could not load class 'app.ValidationPassword
...?!? app.ValidationPassword已定义 。它应该在那里可用。一开始,我认为这是因为一个循环依赖(非常有趣,昨天:我不得不了解AMD循环依赖关系,试图找出这个问题......)
如果取消注释该行,则在脚本中执行:
TEST = new r.RetypePasswordDialog();
整个事情都有效。这是一个毫无意义的事实,我无法弄清楚为什么它会或者应该有所作为。
解释最受欢迎......我找不到任何!
谢谢,
Merc的。
答案 0 :(得分:1)
app = new r.AppMainScreen( {});
您在此处重新定义了全局app
变量,但正在尝试将其用作其类型系统的基础对象。使用var
将变量范围扩展到函数。