2009-07-20 18 views
5

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

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

それとも私のようなダイアログオブジェクトのプロパティを使用してください:

isFocusable method 
isLoaded property 
+0

これは、エンド機能である(dijit.byId( "selectLocationDlg")==未定義!) dijit.byId( "selectLocationDlg")。destroyRecursive(); } //ここで他のコード } –

答えて

4

Dialog provides two propertiesisLoadedopenを確認してください。コードを調べると、次の説明が見つかります。

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

だから、あなたは可能性だけ:場合 関数bufferAddress(のxCoord、YCOORD){ {:

var dialog = dijit.byId("blah"); 
if(dialog.open) { 
    dialog.destroy(); 
} 
+0

8時以降、 'if(dialog && dialog.open)'や 'dialog'が存在することを安全にチェックする必要があります(' typeof(dialog)!= 'undefined' '、' dialog!= null'など)。 – Daevin

1

あなたはそれを非表示にしたり、それを破壊しますか?

あなたはそれを表示/非表示にしたい場合は、以下の操作を行うことができます

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

あなたがメモリを解放するためにそれをDestoryはしたい場合は、次の

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

私はdestroyは以来、再帰的だと思いますそれは親のdestroyメソッドを呼び出し、その親の1つはdijit.layout.ContentPaneです。

関連する問題