2009-07-20 9 views
5

Estoy ejecutando una función que necesita cerrar un diálogo de Dojo si está cargado. ¿Cómo puedo verificar si se está ejecutando un diálogo dojo? ¿Utilizo JavaScript puro y comprobado por identificación si no está definido?¿Cómo puedo verificar para ver si se carga un cuadro de diálogo Dojo?

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

O puedo utilizar una propiedad del objeto de diálogo como:

isFocusable method 
isLoaded property 
+0

Esta es la función final: función bufferAddress (xCoord, ycoordY) { si (dijit.byId ("selectLocationDlg") == indefinido!) { dijit.byId ("selectLocationDlg"). DestroyRecursive(); } // algún otro código aquí } –

Respuesta

4

Dialog provides two properties es posible que desee comprobar: isLoaded y open. Al excavar el código, encontrará las siguientes descripciones:

  • abrir: Verdadero si Dialog se muestra actualmente en la pantalla.
  • isLoaded: Verdadero si el Panel de Contenido tiene datos, ya sean especificados durante la inicialización (a través de href o contenido en línea), o configurados a través de attr ('content', ...)/attr ('href', ...) Falso si no tiene ningún contenido, o si ContentPane todavía está en proceso de descarga de href.

Por lo tanto, sólo podía:

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

8 años después, debe usar 'if (dialog && dialog.open)' o alguna otra comprobación segura de que 'dialog' existe (' typeof (dialog)! = 'Undefined' ',' dialog! = null', etc.). – Daevin

1

¿Quieres ocultar o destruirlo?

Si lo que desea es mostrar/ocultar ella se puede hacer lo siguiente:

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

Si quieres destory que para liberar memoria:

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

creo destroy es recursivo ya llama a su método padre destroy y uno de sus padres es dijit.layout.ContentPane.

Cuestiones relacionadas