我的应用程序可以打开一个模式,如果已经有一个打开。如果是这种情况,我想关闭该模式并在完成后打开新模式。如何检查Bootstrap UI模块是否打开? - AngularJS
服开启情态动词:
app.service('ModalService', function($uibModal) {
this.open = function(size, template, content, backdrop, controller) {
var modalInstance = $uibModal.open({
animation: true,
templateUrl: content,
windowTemplateUrl: template,
controller: controller,
backdrop: backdrop,
size: size,
resolve: {}
});
return modalInstance;
};
然后我打开一个有:
var m = ModalService.open('lg', '', 'ng-templates/modal.html', true, 'ModalController');
而且我可以关闭它:
m.close();
我只能用m.close ()在同一开关/外壳内,因为我打开模式。如果我想在另一个代码中关闭它,如果稍后在代码m中的语句未定义。
无论如何。我可以检查一个模式是否打开?如果我CONSOLE.LOG(M)再有就是这个:
d.$$state.status = 1
d.$$state.value = true
但我不能访问变量m在我的应用程序的其他地方,所以我不能检查这一点。
整齐漂亮,会给它一个镜头和报告背部。谢谢。 – Bento
这工作。任何想法如何我可以关闭模态?我现在用$ rootScope.m替换了var m,它允许我在应用程序的任何地方访问m。想知道是否有更好的解决方案。 $ rootScope.m = ModalService.open('lg','','ng-templates/modal.html',true,'ModalController'); 然后我做:$ rootScope.m.close(); – Bento
只需将像'open'这样的'modalInstance'存储为局部变量并实现一个附加函数(例如:'ModalService.closeModal()')并关闭服务中的模式。 问题是为什么你想关闭它的范围之外的模态。 –