dojo addOnLoad/ready不适用于对话框
因此,dojo addOnLoad/ready不适用于对话框,dojo,Dojo,因此,dojo.addOnLoad和dojo.ready函数似乎不适用于对话框 我正在寻找替代品。问题是我的对话框HTML是动态创建的,包含许多不同的脚本块,每个脚本块都使用dojo.connect函数来添加功能。例如,我有: <input type='checkbox' name='value(liquid40011252)' value='1' dojoType='dijit.form.CheckBox' id='liquid4001125249' /> <script
dojo.addOnLoad
和dojo.ready
函数似乎不适用于对话框
我正在寻找替代品。问题是我的对话框HTML是动态创建的,包含许多不同的脚本块,每个脚本块都使用dojo.connect
函数来添加功能。例如,我有:
<input type='checkbox' name='value(liquid40011252)' value='1' dojoType='dijit.form.CheckBox' id='liquid4001125249' />
<script type='text/javascript'>dojo.addOnLoad(function() {
dialogConnect4001125249();});
function dialogConnect4001125249() {
dojo.connect(dijit.byId('liquid4001125249'), 'onChange',
function(){
// my code for toggling checkboxes ets
});
}
</script>
并考虑在show
之后调用对话框connect
,但是有很多对话框connectxxxxx
,我没有列表
另一种方法可能是以某种方式在某个地方添加对话框connect
的列表,可能是在对话框本身上。不确定
关于如何解决这个复杂问题有什么想法吗?在您的例子中,对话框只有在执行
searchDlg…
代码后才会存在。通常,dijit.byId
在addOnLoad
例程中找不到它们
我真的不知道您想在connectDialog
函数中做什么,但我认为通过对Dialog进行子类化并使用post-create
方法连接到对话框,您将获得可读性
dojo.declare("mynamespace.MyCustomDialog", [dijit.Dialog], {
templateString: dojo.cache("mynamespace", "templates/MyCustomDialog.html"),
widgetsInTemplate: true,
postCreate: function()
{
// do whatever dojo.connect you need
},
});
dojo.declare("mynamespace.MyCustomDialog", [dijit.Dialog], {
templateString: dojo.cache("mynamespace", "templates/MyCustomDialog.html"),
widgetsInTemplate: true,
postCreate: function()
{
// do whatever dojo.connect you need
},
});