2009-07-20 8 views
5

Używam funkcji, która musi zamknąć okno dialogowe Dojo, jeśli jest załadowane. Jak sprawdzić, czy działa okno dialogowe dojo? Czy używam czystego JavaScriptu i sprawdzam według identyfikatora, jeśli jest on niezdefiniowany?Jak mogę sprawdzić, czy zostało załadowane okno dialogowe Dojo?

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

Albo mogę użyć właściwości obiektu dialogowym jak:

isFocusable method 
isLoaded property 
+0

Jest to funkcja koniec: funkcja bufferAddress (xCoord, yCoord) { if (dijit.byId ("selectLocationDlg") == niezdefiniowana!) { dijit.byId ("selectLocationDlg"). DestroyRecursive(); } } jakiś inny kod tutaj } –

Odpowiedz

4

Dialog provides two properties możesz sprawdzić: isLoaded i open. Po wykopaniu kodu znajdziesz następujące opisy:

  • otwórz: Prawda, jeśli okno dialogowe jest aktualnie wyświetlane na ekranie.
  • isLoaded: Prawda, jeśli zawartość zawiera dane określone podczas inicjowania (za pośrednictwem href lub wbudowanej treści) lub ustawione przez attr ("treść", ...)/attr ("href", ...) Fałsz, jeśli nie ma żadnej zawartości lub jeśli ContentPane nadal pobiera pobieranie href.

Więc może po prostu:

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

Po 8 latach powinieneś użyć 'if (dialog && dialog.open)' lub innego bezpiecznego-sprawdzenia, że ​​'dialog' istnieje (' typeof (dialog)! = 'Undefined' ',' dialog! = null', itp.). – Daevin

1

Chcesz ukryć lub zniszczyć?

Jeśli chcesz tylko, aby pokazać/ukryć go można wykonać następujące czynności:

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

Jeśli chciał destory go zwolnić pamięć:

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

myślę destroy jest rekurencyjne od nazywa swoją macierzystą metodą destroy, a jednym z jej rodziców jest dijit.layout.ContentPane.

Powiązane problemy