1

そのため、関数dojo.addOnLoaddojo.ready関数はダイアログには適用されないようです。

代替品を探しています。dojo.connect問題は、ダイアログの HTML が動的に作成され、機能を追加する関数を使用するさまざまなスクリプト ブロックが含まれていることです。たとえば、私は持っています:

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

これは通常の Web ページでは正常に機能しますが、ダイアログでは無視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();

dialogConnect後で電話することを検討しましshowたが、多くdialogConnectxxxxxてリストがありません。

dialogConnectおそらく、別の方法として、何らかの方法でs のリストをどこかに (おそらくダイアログ自体に)追加することです。わからない。

この複雑な問題を解決する方法についてのアイデアはありますか?

4

1 に答える 1

0

あなたの場合、ダイアログはsearchDlg...コードが実行された後にのみ存在します。ルーチンdijit.byIdでそれらを見つけられないのは正常です。addOnLoad

関数で何をしたいのかよくわかりませんが、ダイアログをサブクラス化し、メソッドを使用してダイアログに接続するconnectDialogことで読みやすくなると思います。postCreate

dojo.declare("mynamespace.MyCustomDialog", [dijit.Dialog], {

    templateString: dojo.cache("mynamespace", "templates/MyCustomDialog.html"),
    widgetsInTemplate: true,

    postCreate: function()
        {
        // do whatever dojo.connect you need
        },

    });
于 2012-08-30T09:02:29.993 に答える