Existe-t-il un moyen d'appeler une fonction après l'appel d'une fenêtre modale (que ce soit avec un bouton ou en cliquant sur le fond)
var dialog, options;
options = {
windowClass: "lightBox"
templateUrl: "url to the template",
controller: "some random controller",
scope: $scope
});
$("body").css({
'overflow': 'hidden'
});
dialog = $modal.open(options);
dialog.result.then(function() {
$("body").css({
'overflow': 'auto'
});
});
Je veux que chaque fois que la fenêtre modale ferme la fonction dans le résultat, la promesse sera exécutée. Maintenant, il s'exécute simplement lorsque je ferme le modal manuellement mon $ modalInstance.close (). Mais si je clique sur le fond, cette méthode n'est pas appelée
une idée de comment je peux faire ça?
Je suppose que vous utilisez les boîtes de dialogue modales d'angular-ui. Mais avant d'entrer dans les détails, un peu de documentation sur les promesses dans AngularJS est nécessaire. Vous devez savoir que chaque fonction puis peut accepter 3 paramètres en tant que tels:
then(successCallback, errorCallback, notifyCallback)
Dans le cas du modal d'angular-ui, cliquer sur la toile de fond entraînera une promesse rejetée. Dans cet esprit, votre code pourrait être changé en:
dialog.result.then(function () {
alert('Modal success at:' + new Date());
}, function () {
alert('Modal dismissed at: ' + new Date());
});
Vous pouvez voir un plongeur fonctionnel ici
Angular 1.2 prend en charge les promesses avec un finally(callback)
:
dialog.result.finally(function() {
alert('clean up resources');
});
Découvrez le plongeur de travail ici .