Angular ui модальный после закрытия события
Есть ли способ вызвать функцию после вызова модального окна (независимо от того, произошло это с кнопкой или нажатием на задний план)
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'
});
});
Я хочу, чтобы каждый раз, когда модальные окна закрывали функцию в result.then, обещание выполнялось. Теперь он просто выполняется, когда я закрываю модально вручную свой $modalInstance.close(). Но если я нажму на задний план, этот метод не будет вызван
любая идея, как я могу это сделать?
Ответы
Ответ 1
Я предполагаю, что вы используете диалоговые окна Modal от angular -ui. Но прежде чем вдаваться в подробности, потребуется немного документации вокруг promises в AngularJS. Вы должны знать, что каждая функция then может принимать 3 параметра как таковые:
then(successCallback, errorCallback, notifyCallback)
- successCallback выполняется, когда обещание разрешено.
- errorCallback выполняется, когда обещание отклонено.
- notifyCallback выполняется при уведомлении.
В случае angular -ui модальный щелчок по фону приведет к отклонению обещания. Имея это в виду, ваш код можно изменить на:
dialog.result.then(function () {
alert('Modal success at:' + new Date());
}, function () {
alert('Modal dismissed at: ' + new Date());
});
Вы можете увидеть рабочий плункер здесь
Ответ 2
Angular 1.2 поддерживает promises с finally(callback)
:
dialog.result.finally(function() {
alert('clean up resources');
});
Посмотрите рабочий плунжер здесь.