angularjs modal-dialog angular-ui

angularjs - Determine de forma fiable si el modo angular-ui está abierto o cerrado(mostrado u oculto)



modal-dialog (1)

TLDR: incluya el módulo ui.bootstrap.modal en su aplicación, inyecte factory $modalStack en su controlador / servicio / lo que sea y luego !!$modalStack.getTop() es suficiente para saber si existe un modal en no.

Solución detallada: Me enfrenté al mismo problema y se me ocurrió el siguiente trabajo:

Hay una fábrica llamada $modalStack que se define en ui-bootstrap lib que maneja los modales. El mismo servicio también tiene un método llamado getTop() que devuelve lo más modal en dom. (Y un método dismissAll() para cerrar todos los modales). Así que escribí un pequeño módulo con algunas funciones pequeñas.

var utilsModule = angular.module(''utilsModule'', [''ui.bootstrap.modal'']); utilsModule.factory(''modalUtils'', [ ''$modalStack'', function ($modalStack) { return { modalsExist: function () { return !!$modalStack.getTop(); }, closeAllModals: function () { $modalStack.dismissAll(); } }; } ]);

Estoy buscando un método para determinar de manera confiable si la ventana modal de ui angular está actualmente abierta o cerrada.

El Bootstrap JS estándar proporciona los eventos ''mostrados'' / ''ocultos'' para esto.

En este momento solo puedo ajustar la función modal.close () y establecer una variable en ''cerrado''. Además, estoy eliminando el objeto modal y volviéndolo a crear cuando se abra de nuevo. Pero eso no cubre los casos en los que el usuario hace clic en el fondo o presiona la tecla ESC para cerrar el modo.

¿Hay una manera limpia de cubrir estos casos, también?