angularjs - page - ¿Cómo evito que el modo angular ui se cierre?
page title angular 4 (6)
Configurar globalmente,
decorator , una de las mejores características en angular. da la capacidad de "parchear" módulos de terceros.
Supongamos que desea este comportamiento en todas sus referencias de $modal
y no desea cambiar sus llamadas.
Puedes escribir un decorador . eso simplemente agrega opciones - {backdrop:''static'', keyboard:false}
angular.module(''ui.bootstrap'').config(function ($provide) {
$provide.decorator(''$modal'', function ($delegate) {
var open = $delegate.open;
$delegate.open = function (options) {
options = angular.extend(options || {}, {
backdrop: ''static'',
keyboard: false
});
return open(options);
};
return $delegate;
})
});
- Nota: en las últimas versiones,
$modal
rebautizado como$uibModal
Demostración en línea - http://plnkr.co/edit/2MWIpOs3uAG5EFQy6Ndn?p=preview
Estoy usando Angular UI $ modal en mi proyecto http://angular-ui.github.io/bootstrap/#/modal
No quiero que el usuario cierre el modal presionando telón de fondo. Quiero que un modal solo se cierre presionando el botón de cerrar que he creado.
¿Cómo evito que cierre modal?
Esto es lo que se menciona en la documentación
telón de fondo: controla la presencia de un fondo. Valores permitidos: verdadero (predeterminado), falso (sin fondo), ''estático'': el fondo está presente pero la ventana modal no se cierra al hacer clic fuera de la ventana modal.
static
puede funcionar
Mientras crea su modal, puede especificar su comportamiento:
$modal.open({
// ... other options
backdrop : ''static'',
keyboard : false
});
Pregunta anterior, pero si desea agregar cuadros de diálogo de confirmación en varias acciones cercanas, agregue esto a su controlador de instancia modal:
$scope.$on(''modal.closing'', function(event, reason, closed) {
console.log(''modal.closing: '' + (closed ? ''close'' : ''dismiss'') + ''('' + reason + '')'');
var message = "You are about to leave the edit view. Uncaught reason. Are you sure?";
switch (reason){
// clicked outside
case "backdrop click":
message = "Any changes will be lost, are you sure?";
break;
// cancel button
case "cancel":
message = "Any changes will be lost, are you sure?";
break;
// escape key
case "escape key press":
message = "Any changes will be lost, are you sure?";
break;
}
if (!confirm(message)) {
event.preventDefault();
}
});
Tengo un botón de cierre en la parte superior derecha de la mía, que desencadena la acción "cancelar". Al hacer clic en el fondo (si está habilitado), se activa la acción de cancelar. Puede usar eso para usar diferentes mensajes para varios eventos cercanos.
para la nueva versión de ngDialog (0.5.6), use:
closeByEscape : false
closeByDocument : false
backdrop : ''static''
Funcionará para eventos de "clic" pero aún puede usar la tecla "Esc" para cerrar la ventana emergente.
keyboard :false
para evitar que la ventana emergente se cierre con la tecla "Esc".
Gracias a pkozlowski.opensource por la respuesta.
Creo que la pregunta es un duplicado de UI Bootstrap Modal angular - cómo prevenir la interacción del usuario