【问题标题】:dojo addOnLoad/ready does not work with dialogsdojo addOnLoad/ready 不适用于对话框
【发布时间】:2012-06-09 12:00:13
【问题描述】:

所以看来dojo.addOnLoaddojo.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>

这在普通网页中工作正常,但在对话框中 addOnLoad 不受尊重,dijit.byId('liquid4001125249') 未定义。 ready 没有帮助。

我用

实例化对话框
searchDlg = dojox.widget.DialogSimple();
searchDlg.set("title", title);
searchDlg.set("style", "width: " + width + "px; max-height: "+height+"px; overflow:auto;");
searchDlg.set("content", content);
searchDlg.show();

并考虑在show 之后调用dialogConnect,但有很多dialogConnectxxxxx,我没有列表。

也许另一种选择是以某种方式在某处添加dialogConnects 的列表 - 可能在对话框本身上。不确定。

关于如何解决这个复杂问题的任何想法?

【问题讨论】:

    标签: dojo


    【解决方案1】:

    在您的情况下,对话框仅在 searchDlg... 代码执行后才存在。 dijit.byIdaddOnLoad 例程中找不到它们是正常的。

    我真的不知道你想在 connectDialog 函数中做什么,但我认为你将通过继承 Dialog 并使用 postCreate 方法连接到对话框来获得可读性。

    dojo.declare("mynamespace.MyCustomDialog", [dijit.Dialog], {
    
        templateString: dojo.cache("mynamespace", "templates/MyCustomDialog.html"),
        widgetsInTemplate: true,
    
        postCreate: function()
            {
            // do whatever dojo.connect you need
            },
    
        });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多