javascript - ryu - dojo significado
Evento de cierre de diálogo de Dojo en X(arriba a la derecha) (5)
Estoy usando Dojo para crear un diálogo simple para crear un usuario en un sistema. El problema es que me sale el error:
Tried to register widget with `id==user_submit` but that `id` is already registered
user_submit
, es un botón de Dojo. Tengo que terminar el formulario dentro del diálogo. Cuando cierro el diálogo haciendo clic en él y enviando el formulario, no hay ningún problema para volver a abrir el diálogo (en el evento click del botón, tengo esta línea de código:
dijit.byId("user_submit").destroy();
pero si cierro el diálogo a través del botón [x] -link / en la esquina superior derecha, no destruyo el botón y luego no puedo abrir el diálogo nuevamente sin volver a cargar la página.
¿Cómo consigo que Dojo destruya el botón o cómo sobrecargar el evento click en el botón [X] -link /, para que pueda escribir el comando destroy para el botón?
IIRC, se llama al evento de extensión onClose
cuando hace clic en la cosa X, por lo que podría tratar de poner allí su código de limpieza.
También podría considerar eludir el problema por completo. Tal vez no es necesario destruir el widget y, en su lugar, podría reutilizar el mismo. También podría hacer una prueba de existencia de artilugios antes de volver a crearla, destruyendo la versión anterior si aún está activa.
Encontré una solución. mediante el uso de dojo.connect ().
myDialog.connect(myDialog, "hide", function(e){
dijit.byId("user_submit").destroy();
});
Hubiera posteth esto poco después de que publiqué la quistion, pero no tuve suficientes puntos, así que aquí está la respuesta de nuevo, solo un poco tarde :-)
Al presionar la X en la parte superior del diálogo, se activa el evento "onCancel".
Deshágase del elemento allí.
"Developer shouldn''t override or connect to this method"
para "onCancel" ver documentación . Una mejor solución es:
var myDialog = new Dialog({
id: "myDialogId1",
onHide: function() {
myDialog.destroy()
}
});
Puede anular el método de onCancel()
como se indicó anteriormente o puede adjuntar evento al dijit.dialog.closeButtonNode
dijit.dialog.closeButtonNode. dijit.dialog.closeButtonNode
es el nombre del atributo data-dojo-attach-point
para el botón de cerrar.
Exp:
dojo.on(dijit.Dialog.closeButtonNode, "click", function(evt){
//add your logic here
});