我在我的项目http://angular-ui.github.io/bootstrap/#/modal中使用Angular UI $ modal
我不希望用户通过在背景上按下来关闭模式。我希望只能通过按我创建的关闭按钮来关闭模态。
如何防止模式关闭?
我在我的项目http://angular-ui.github.io/bootstrap/#/modal中使用Angular UI $ modal
我不希望用户通过在背景上按下来关闭模式。我希望只能通过按我创建的关闭按钮来关闭模态。
如何防止模式关闭?
Answers:
创建模态时,可以指定其行为:
$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();
insidecase "backdrop click"
并返回以结束执行即可。
装饰器,最好的功能之一。提供了“修补”第三方模块的功能。
假设您在所有$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