texto - Cierre todos los cuadros de diálogo modales en Dojo
elementos de un cuadro de dialogo (5)
¿Alguien sabe cómo puedo cerrar todos los cuadros de diálogo modales creados por Dojo? Aparentemente solía haber una función dojo.popup.closeAll, pero esta ya no está disponible en la última versión de Dojo API que viene con Spring JS.
Parece que la única forma válida ahora es realizar un seguimiento de sus diálogos y cerrarlos cuando sea necesario utilizando hide ().
Así es ... la razón por la que ese método ya no existe es que desde 1.0, quien abre una ventana emergente se encarga de cerrarlo. Es un cambio de arquitectura que hice.
La mayoría de los widgets (como Menú) supervisan cuándo se han borrado y luego cierran su ventana emergente secundaria. Por lo tanto, probablemente pueda obtener el efecto deseado cambiando el foco al documento en sí o a algún nodo aleatorio. Por supuesto, eso es una solución.
Cuenta
Esto encontrará todos los cuadros de diálogo literales en una página y los ocultará:
dijit.registry.filter(function(w){
return w && w.declaredClass == "dijit.Dialog"
}).forEach(function(w){
w.hide();
});
No sé si esto es de alguna utilidad, pero tiendo a usar solo un diálogo para cada página (ya que es modal). El contenido de todos los diálogos es xhrGot del servidor, y paso todo el tiempo de dojo dentro del ciclo de vida de una página reciclando una y otra vez el mismo diálogo, simplemente cambiando sus atributos: su href
y su title
. Me parece que esto funciona tan bien como tener varios cuadros de diálogo.
dojo> = 1.10:
define([''dijit/registry''], ...
registery.toArray().filter(function(w){
return w && w.declaredClass == "dijit.Dialog"
}).forEach(function(w){
w.hide();
});