J'ouvre une fenêtre modale en utilisant $ uibModal.open à partir d'un autre contrôleur, et j'ai besoin d'être averti lorsque la fenêtre modale a été complètement fermée (et non pendant la fermeture ...) afin que je puisse exécuter une fonction.
Le code qui ouvre le modal est le suivant:
var modalInstance = $uibModal.open({
templateUrl: "myModalContent.html",
controller: "termModalCtrl",
windowClass: 'app-modal-window',
resolve: {
'params': function () { return id }
}
});
J'ai vu quelques suggestions de solutions à utiliser:
modalInstance.result.then(function(result) {
});
Le problème est que la fonction de rappel est appelée avant la fermeture réelle de la fenêtre modale (lorsque la fenêtre modale est toujours ouverte) et ce n'est pas le comportement que je veux car cela signifie qu'il intercepte l'événement "fermeture" et non le " fermé "événement du modal.
Existe-t-il un moyen propre et simple de mettre en œuvre cela? Je serais surpris sinon, car ce comportement est très courant dans tous les cadres d'interface utilisateur de la planète ...
Veuillez aider!
Essaye ça.
.open
la méthode renvoie une promesse qui pourrait être chaînée avec .closed
qui est l'une des nombreuses propriétés de .open
méthode.
Je l'ai testé et il ne montre l'alerte qu'après la fermeture du modal et non pendant sa "fermeture".
Reportez-vous à la section "fermé" sous Retour ici
var modalInstance = $uibModal.open({
templateUrl: "myModalContent.html",
controller: "termModalCtrl",
windowClass: 'app-modal-window',
resolve: {
'params': function () { return id }
}
}).closed.then(function(){
window.alert('Modal closed');
});
voici le plongeur http://plnkr.co/edit/yB3k8e3R3ZLQFQ6sfLYW?p=preview
Utilisation modalInstance.result
promet un deuxième rappel pour rattraper l'événement de clôture. Je reçois également une exception 'Impossible d'obtenir la propriété' puis 'de référence non définie ou nulle' on .closed.then
,
var modalInstance = $uibModal.open({
templateUrl: "myModalContent.html",
controller: "termModalCtrl",
windowClass: 'app-modal-window',
resolve: {
'params': function () { return id }
}
});
modalInstance.result
.then(function (selectedItem) {
//
}, function () {
//close callback
console.info('modal closed');
});