【发布时间】:2014-04-08 07:05:15
【问题描述】:
我在我的 AngularJS 应用程序的 $rootScope 上创建了这个 alertModal 函数。它工作得很好,但是,我需要每个模态来覆盖后续的模态。换句话说,如果已经有一个模态打开,我希望任何后续模态都关闭现有的。我不知道该怎么做,因为每个$modal 实例都会在$rootScope 上创建一个子作用域。 $modal 中有一个选项可以将scope 传递给它以使用(而不是$rootScope),但我不确定如何纯粹为此目的实例化自定义范围。任何帮助或线索都会很棒。
$rootScope.modalAlert = function (alert_type, message, acknowledge) {
return $modal.open({
templateUrl: '/partials/modals/alert.html',
controller: AlertModalInstanceCtrl,
resolve: {
data: function () {
return {
type: alert_type,
message: message,
acknowledge: acknowledge || false
}
}
}
})
}
var AlertModalInstanceCtrl = function ($scope, $modalInstance, data) {
var heading = ''
switch (data.type) {
case 'error':
heading = 'Oops'
break
case 'working':
heading = 'Working'
break
}
$scope.alert = {
type: data.type,
heading: heading,
message: data.message,
acknowledge: data.acknowledge
}
$scope.cancel = function () {
$modalInstance.dismiss('cancelled');
};
}
不太相关,但这里是随附的 HTML 模板:
<div class="row">
<div class="col-sm-12">
<h2 class="modal-header">{{ alert.heading }}</h2>
<div class="modal-body">
<div style="text-align: center;">
<i ng-class="{
'fa fa-exclamation-triangle fa-5x danger': alert.type=='error',
'fa fa-info fa-5x info': alert.type=='working'
}"></i>
<p>{{ alert.message }}</p>
</div>
<button ng-show="alert.acknowledge" class="btn btn-default pull-right" ng-click="cancel()">Ok</button>
</div>
</div>
</div>
【问题讨论】:
标签: javascript angularjs angular-ui-bootstrap