2013-07-31 11 views
34

Muszę wykonać połączenie, gdy użytkownik jest bezczynny i upłynął limit czasu sesji, który spowoduje zamknięcie wszystkich modów Bootstrap. Aktywne modemy zależą od tego, co robi użytkownik w tym czasie, więc chciałbym zrobić coś, co obejmuje wszystko.Jak zamknąć wszystkie aktywne modemy początkowe podczas sesji?

Próbowałem:

$('.modal').modal('toggle'); 

Kiedy pojawia się czas, ale moje czasowniki modalne są nadal.

Odpowiedz

77

Użyj następującego kodu:

$('.modal').modal('hide'); 

Także jeśli chcesz coś zrobić, jeśli modalne jest ukryta, to możesz to zrobić:

$('.modal').on('hidden', function() { 
    // write your code 
}); 
+2

.. ponieważ użycie 'przełączania' spowoduje wyświetlenie ukrytych modów i ukrycie wyświetlanych modałów. – Robadob

+0

Ale jak wspomniał, jeśli niektóre modemy są otwarte, a niektóre są blisko, może to spowodować pewien problem. więc lepiej jest użyć lepszego bezpiecznego kodu. –

+0

Podałem przyczynę Twojej odpowiedzi, ponieważ zgadzam się i nie podałeś przyczyny. – Robadob

-1

Spróbuj w ten sposób: $('.modal.in:visible').modal('hide');

5

W poprawnej odpowiedzi brakuje czegoś istotnego.

$('.modal').modal('hide') // closes all active pop ups. 
$('.modal-backdrop').remove() // removes the grey overlay. 

Druga linia jest niezbędna, jeśli chcesz, aby użytkownicy normalnie używali strony.

0

W ten sposób działałem w moim projekcie bez użycia żadnej fabryki ani dodatkowego kodu.

//hide any open bootstrap modals 
    angular.element('.inmodal').hide(); 

Mam funkcję limitu czasu, który emituje wylogowania jako $rootScope.$emit('logout'); i słuchacz w moich usług jest następujący:

$rootScope.$on('logout', function() {      
        //hide any open bootstrap modals 
        angular.element('.inmodal').hide(); 

        //do something else here 

       }); 

Jeśli chcesz ukryć jakieś inne czasowniki modalne, takie jak okna materialnej kątowe ($mdDialog) zastosowanie & słodki alert dialogowego angular.element('.modal-dialog').hide(); & angular.element('.sweet-alert').hide();

ja nie wiem, czy to jest właściwe podejście, ale to działa na mnie.

Powiązane problemy