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
        },

    });