Angular-UI 모달이 닫히지 않도록하려면 어떻게해야합니까?


답변:


194

모달을 만드는 동안 동작을 지정할 수 있습니다.

$modal.open({
   // ... other options
   backdrop  : 'static',
   keyboard  : false
});

2
네, 정답입니다 :) 공유 해주셔서 감사합니다!
skywalker

멋있는! 공유해 주셔서 감사합니다. +1
Khanh Tran 2015 년

10
이를 동적으로 설정할 수있는 방법이 있습니까? 예를 들어 팝업이 중단되어서는 안되는 작업 중이라면?
RonLugge 2015


23

이전 질문이지만 다양한 닫기 작업에 대한 확인 대화 상자를 추가하려면 모달 인스턴스 컨트롤러에 다음을 추가하십시오.

$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();
    }
});

오른쪽 상단에 '취소'작업을 트리거하는 닫기 버튼이 있습니다. 배경을 클릭하면 (활성화 된 경우) 취소 작업이 트리거됩니다. 이를 사용하여 다양한 닫기 이벤트에 대해 다른 메시지를 사용할 수 있습니다.


내 질문에 어떻게 대답합니까?
Rahul Prasad 2016

이를 통해 명령 이유에 따라 모달이 닫히도록 지시 된 경우 가로 챌 수 있습니다. 이를 기반으로 원하는 경우 사용자 정의 논리를 추가하거나 실제로 모달을 닫기 전에 사용자에게 확인을 요청합니다.
Tiago

질문에서 언급했듯이 모달이 닫히지 않도록 논리를 알려주십시오.
Rahul Prasad

그것이 당신이 원하는 전부라면, event.preventDefault();내부를 사용 case "backdrop click"하고 실행을 끝내기 위해 돌아갑니다.
Tiago

5
+1. 이것은 실제로 기능 (배경 및 키보드 트리거)을 제한하지 않고 모달이 닫히는 것을 방지하는 훨씬 더 좋은 방법입니다. 참고 : 이벤트는 브로드 캐스팅 되므로 uibModalInstance 범위 또는 다운 스트림 범위에서 수신해야합니다. 0.13로 : a5a82d9
세르게이 포포프

13

이것은 문서에 언급 된 것입니다.

배경-배경의 존재를 제어합니다. 허용되는 값 : true (기본값), false (배경 없음), '정적'-배경이 있지만 모달 창 외부를 클릭 할 때 모달 창이 닫히지 않습니다.

static 작동 할 수 있습니다.


모달 창 외부를 클릭 할 때 배경이 표시되지 않고 모달 창이 닫히도록하는 옵션이 있습니까?

8

글로벌 구성,

decorator , 앵귤러 최고의 기능 중 하나입니다. 타사 모듈을 "패치" 하는 기능을 제공합니다.

모든 $modal참조 에서이 동작 원하고 호출을 변경하고 싶지 않다고 가정 해 보겠습니다 .

데코레이터를 작성할 수 있습니다 . 단순히 옵션에 추가됩니다.{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;
    })
});
  • 참고 : 최신 버전에서는 $modal이름이$uibModal

온라인 데모-http: //plnkr.co/edit/2MWIpOs3uAG5EFQy6Ndn ? p=preview


5

새 버전의 ngDialog (0.5.6)의 경우 다음을 사용합니다.

closeByEscape : false
closeByDocument : false
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.