5

Dojo ダイアログがロードされている場合に閉じる必要がある関数を実行しています。Dojo ダイアログが実行されているかどうかを確認するにはどうすればよいですか? 未定義の場合、純粋な JavaScript を使用して ID でチェックしますか?

if (dijit.byId("blah") !== undefined) { 
     destroyRecursive dijit;
}

または、次のようなダイアログ オブジェクトのプロパティを使用しますか。

isFocusable method
isLoaded property
4

2 に答える 2

4

Dialog には、確認する必要がある可能性がある 2 つのプロパティがあります:isLoadedopen. コードを掘り下げると、次の説明が見つかります。

  • open: Dialog が現在画面に表示されている場合は True。
  • isLoaded: ContentPane にデータが含まれている場合は True、初期化中に (href またはインライン コンテンツを介して) 指定されるか、attr('content', ...) / attr('href', ...) を介して設定されます。コンテンツがない場合、または ContentPane がまだ href をダウンロード中の場合。

したがって、次のことができます。

var dialog = dijit.byId("blah");
if( dialog.open ) {
    dialog.destroy();
}
于 2009-07-21T18:25:45.607 に答える
1

あなたはそれを隠したいですか、それとも破壊したいですか?

表示/非表示だけにしたい場合は、次のようにします。

var dialog = dijit.byId('blah');
if (dialog) {
  if (dialog.open) {
    dialog.hide();
  }
  else {
     dialog.show();
  }
}

メモリを解放するために破棄したい場合:

var dialog = dijit.byId('blah');
dialog.destory();

親メソッドをdestroy呼び出し、その親の 1 つが であるため、再帰的だと思います。destroydijit.layout.ContentPane

于 2009-07-20T23:28:18.747 に答える