Подтвердить что ты не робот

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(). Но если я нажму на задний план, этот метод не будет вызван

любая идея, как я могу это сделать?

4b9b3361

Ответ 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');
});

Посмотрите рабочий плунжер здесь.