У меня есть служба angular для обработки модальных окон:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
return $uibModal.open(options);
}
});
Теперь я обновился до angular 1.6 и получил эту ошибку:
Возможно необработанный отказ: щелчок в фоновом режиме
всякий раз, когда я открываю модальное окно и нажимаю где-нибудь еще (фон), модальное закрывается (как и предполагалось). Итак, я хочу обрабатывать этот unhandled exception
в моем ModalService
, так как я не хочу обрабатывать этот случай каждый раз, когда использую ModalService
. Всегда можно закрыть модальное окно с помощью фонового клика, это не исключение.
Я старался:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
var modalInstance = $uibModal.open(options);
modalInstance.result.catch(function error(error) {
if(error === "backdrop click") {
// do nothing
} else {
throw error;
}
})
return modalInstance;
}
});
Но это приводит к тому, что я не могу обрабатывать другие ошибки, кроме backdrop click
, так как они всегда выдаются:
ModalService.open({...}).result.catch(function(error) {
// this will catch the error too, but the throw in the ModalService
// will occure in parallel and will not be catched by this function
});
А если я попробую так:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
var modalInstance = $uibModal.open(options);
modalInstance.result.then(function(whatever) {
return whatever;
}, function rejection(error) {
return error;
});
return modalInstance;
});
});
он устраняет ошибку «необработанный отказ», но для каждого случая, а не только для «щелкнутого фона».
Есть ли у кого-нибудь хорошее решение для этого случая?
then
. 22.03.2017