web-dev-qa-db-fra.com

Comment fermer tous les modaux bootstrap actifs lors de l'expiration de la session?

J'ai besoin de faire un appel lorsque l'utilisateur est inactif et passe le délai de session qui fermera tous les modaux Bootstrap. Les modaux actifs dépendent de ce que l'utilisateur fait à l'époque, donc je aimerait faire quelque chose qui englobe tout.

J'ai essayé:

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

Quand le temps mort arrive mais que mes modaux sont toujours là.

40
jeff werner

Utilisez le code suivant:

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

De plus, si vous souhaitez faire quelque chose si le modal est masqué, vous pouvez le faire:

$('.modal').on('hidden', function () {
  // write your code
});
90
S. Russell

La bonne réponse manque quelque chose de vital.

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

La deuxième ligne est essentielle si vous souhaitez que les utilisateurs utilisent la page normalement.

13
Tom McDonough

C'est ainsi que je l'ai fait fonctionner dans mon projet sans utiliser d'usine ni de code supplémentaire.

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

J'ai une fonction de délai d'attente qui émet la déconnexion en tant que $rootScope.$emit('logout'); et l'écouteur dans mon service est le suivant:

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

                    //do something else here  

                });

Si vous souhaitez masquer d'autres modaux tels que angular ($mdDialog) Et la boîte de dialogue d'alerte douce, utilisez angular.element('.modal-dialog').hide(); & angular.element('.sweet-alert').hide();

Je ne sais pas si c'est la bonne approche, mais ça marche pour moi.

0
Sri7