2013-12-11 7 views
16

Poszukuję sposobu, aby wiarygodnie ustalić, czy okno modulacji kątowej jest aktualnie otwarte czy zamknięte.Niezawodnie określić, czy modul kątowy-ui jest otwarty czy zamknięty (pokazany lub ukryty).

Standardowy system Bootstrap JS udostępnia zdarzenia "pokazane"/"ukryte".

Teraz mogę tylko zawinąć funkcję modal.close() i ustawić zmienną na "zamkniętą". Ponadto usuwam obiekt modalny i odtwarzam go ponownie po ponownym otwarciu. Nie dotyczy to jednak przypadków, w których użytkownik kliknie tło lub naciska klawisz ESC, aby zamknąć modalny.

Czy istnieje również czysty sposób na pokrycie tych przypadków?

+0

Jaki jest Twój prawdziwy, funkcjonalny przypadek użycia? –

+0

Używam widelca usługi bezpieczeństwa używanego w twojej aplikacji kątowej: https://github.com/angular-app/angular-app/blob/master/client/src/common/security.security.js – chmanie

Odpowiedz

23

TLDR: Dołącz moduł ui.bootstrap.modal w swojej aplikacji, wstrzyknąć fabryki $modalStack w kontrolerze/usługa/cokolwiek, a następnie !!$modalStack.getTop() wystarczy wiedzieć, czy istnieje na nie modalne.

Szczegółowe Rozwiązanie: byłem stoi ten sam problem i wymyśliłem następujący obejść:

Jest fabryka nazywa $modalStack który jest zdefiniowany w UI-bootstrap lib który obsługuje te czasowniki modalne. Ta sama usługa ma również metodę o nazwie getTop(), która zwraca najwyższy najbardziej modalny w dom. (I metoda dismissAll(), aby zamknąć wszystkie modały). Napisałem więc mały moduł z niewielkimi funkcjami.

var utilsModule = angular.module('utilsModule', ['ui.bootstrap.modal']); 

utilsModule.factory('modalUtils', [ 
    '$modalStack', 
    function ($modalStack) { 
    return { 
     modalsExist: function() { 
     return !!$modalStack.getTop(); 
     }, 
     closeAllModals: function() { 
     $modalStack.dismissAll(); 
     } 
    }; 
    } 
]); 
+2

literówka w '$ modalStack.dismisAll();'. Powinien być '$ modalStack.dismissAll();' – Dmitry

+0

To rozwiązanie działa świetnie. – jlyonsmith

+0

Jest łatwy w użyciu ... –

Powiązane problemy