2013-09-23 4 views
37

Есть ли способ, я могу вызвать функцию после того, как модальное окно получило колл (независимо от того, если бы это случилось с кнопкой или нажав на фоне)угловой пользовательский интерфейс модального после близкого события

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' 
    }); 
}); 

Я хочу, чтобы каждый раз, когда модальные окна закрывают функцию в результате. Затем обещание выполняется. Теперь он просто выполняется, когда я закрываю модально вручную свой $ modalInstance.close(). Но если я нажму на задний план, этот метод не будет называться

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

ответ

57

Предполагаю, что вы используете диалоговые окна Modal от углового-ui. Но прежде чем вдаваться в подробности, потребуется немного документации по обещаниям в AngularJS. Вы должны знать, что каждый тогда функция может принимать 3 параметра, как например:

then(successCallback, errorCallback, notifyCallback) 
  • successCallback выполняется, когда обещание будет решена.
  • errorCallback Выполняется, когда обещание отклонено.
  • notifyCallback Выполняется при уведомлении.

В случае модального углового ui, щелкнув по фону, вы получите отклоненное обещание. Имея это в виду, что ваш код может быть изменен на:

dialog.result.then(function() { 
    alert('Modal success at:' + new Date()); 
}, function() { 
    alert('Modal dismissed at: ' + new Date()); 
}); 

Вы можете увидеть рабочую plunker here

+0

вы спасли мою жизнь, спасибо :) – mrserfr

20

Угловое 1.2 поддерживает обещания с finally(callback):

dialog.result.finally(function() { 
    alert('clean up resources'); 
}); 

Выезд рабочий plunker here.

+2

Помните, что 'finally' не будет работать в IE8. Возможное исправление здесь - http://www.antonydenyer.co.uk/blog/2014/08/22/angularjs-decorator-to-support-ie8-catch/ – Kunal

Смежные вопросы