我正在寻找一种可靠地确定角度模态窗口当前是否打开或关闭的方法。
标准的Bootstrap JS为此提供了’显示的’/’隐藏’事件。
现在我只能包装modal.close()函数,并将一个变量设置为“closed”。此外,我正在删除模态对象,再次打开时重新实例化它。但是,这并不包括用户在背景幕上点击或按ESC键关闭模式的情况。
有没有干净的方式来涵盖这些情况呢?
TLDR:
在您的应用程序中包含模块ui.bootstrap.modal,在您的控制器/服务中注入工厂$ modalStack然后!! $ modalStack.getTop()足以知道是否存在模态。
原文链接:https://www.f2er.com/angularjs/144176.html在您的应用程序中包含模块ui.bootstrap.modal,在您的控制器/服务中注入工厂$ modalStack然后!! $ modalStack.getTop()足以知道是否存在模态。
详细解决方案:
我面对同样的问题,我想出了以下工作:
有一个名为$ modalStack的工厂,它在ui-bootstrap lib中定义,它处理模态。相同的服务也有一个叫做getTop()的方法,它返回dom中最顶层的模态。 (和一个方法dismissAll()关闭所有的模态)。所以我写了一个小功能的小模块。
var utilsModule = angular.module('utilsModule',['ui.bootstrap.modal']); utilsModule.factory('modalUtils',[ '$modalStack',function ($modalStack) { return { modalsExist: function () { return !!$modalStack.getTop(); },closeAllModals: function () { $modalStack.dismissAll(); } }; } ]);