내 프로젝트에서 Angular UI $ modal을 사용하고 있습니다. http://angular-ui.github.io/bootstrap/#/modal
사용자가 배경을 눌러 모달을 닫는 것을 원하지 않습니다. 모달은 내가 만든 닫기 버튼을 눌러서 만 닫을 수 있기를 원합니다.
모달이 닫히지 않도록하려면 어떻게해야합니까?
내 프로젝트에서 Angular UI $ modal을 사용하고 있습니다. http://angular-ui.github.io/bootstrap/#/modal
사용자가 배경을 눌러 모달을 닫는 것을 원하지 않습니다. 모달은 내가 만든 닫기 버튼을 눌러서 만 닫을 수 있기를 원합니다.
모달이 닫히지 않도록하려면 어떻게해야합니까?
답변:
모달을 만드는 동안 동작을 지정할 수 있습니다.
$modal.open({
// ... other options
backdrop : 'static',
keyboard : false
});
backdrop : 'static'
'클릭'이벤트에서 작동하지만 여전히 "Esc"키를 사용하여 팝업을 닫을 수 있습니다.
keyboard :false
"Esc"키로 팝업 닫기를 방지합니다.
답변을 위해 pkozlowski.opensource에게 감사드립니다.
질문이 Angular UI Bootstrap 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();
}
});
오른쪽 상단에 '취소'작업을 트리거하는 닫기 버튼이 있습니다. 배경을 클릭하면 (활성화 된 경우) 취소 작업이 트리거됩니다. 이를 사용하여 다양한 닫기 이벤트에 대해 다른 메시지를 사용할 수 있습니다.
event.preventDefault();
내부를 사용 case "backdrop click"
하고 실행을 끝내기 위해 돌아갑니다.
이것은 문서에 언급 된 것입니다.
배경-배경의 존재를 제어합니다. 허용되는 값 : true (기본값), false (배경 없음), '정적'-배경이 있지만 모달 창 외부를 클릭 할 때 모달 창이 닫히지 않습니다.
static
작동 할 수 있습니다.
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