2013-07-31 3 views
34

Devo effettuare una chiamata quando l'utente è inattivo e passa il timeout della sessione che chiuderà tutte le modal di Bootstrap. Le modali attive dipendono da ciò che l'utente sta facendo in quel momento, quindi mi piacerebbe fare qualcosa di cui tutto ciò è comprensivo.Come chiudere tutti i mod attivi di bootstrap sul timeout della sessione?

ho provato:

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

Quando si verifica il time out, ma i miei modali sono ancora lì.

risposta

77

utilizzare il seguente codice:

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

Inoltre, se si desidera fare qualcosa se il modale è nascosta allora si può fare questo:

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

... perché l'uso di 'toggle' mostrerà le tue modal nascoste e nasconderà le tue modal. – Robadob

+0

Ma come ha detto che se alcune modali sono aperte e alcune sono chiuse, potrebbe causare qualche problema. quindi è meglio usare il codice di sicurezza migliore. –

+0

Stavo affermando il motivo della tua risposta, poiché sono d'accordo e tu non ne hai incluso il motivo. – Robadob

-1

provare in questo modo: $('.modal.in:visible').modal('hide');

5

Alla risposta corretta manca qualcosa di vitale.

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

La seconda riga è di vitale importanza se si desidera che gli utenti utilizzino la pagina normalmente.

0

Ecco come ho funzionato nel mio progetto senza utilizzare alcun codice di fabbrica o aggiuntivo.

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

Ho una funzione di timeout che emette il logout come $rootScope.$emit('logout'); e l'ascoltatore nel mio servizio è la seguente:

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

        //do something else here 

       }); 

Se si desidera nascondere tutti gli altri verbi modali, come dialogo materiale angolare ($mdDialog) uso & di dialogo avviso dolce angular.element('.modal-dialog').hide(); & angular.element('.sweet-alert').hide();

non so se questo è l'approccio giusto, ma funziona per me.

Problemi correlati