javascript – 如何以一般方式处理’可能未处理的拒绝:背景点击’
作者:互联网
我有处理模态的角度服务:
angular.module('myApp').service('ModalService', function($uibModal) {
function open(options) {
return $uibModal.open(options);
}
});
现在我升级到角度1.6并得到此错误:
Possibly unhandled rejection: backdrop click
每当我打开一个模态并单击其他地方(背景)并且模态关闭(按预期).所以我想在我的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;
}
});
但这会导致我无法处理除背景点击之外的其他错误的问题,因为它们总是被抛出:
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;
});
});
它解决了“未处理的拒绝”错误,但对于每种情况,不仅仅是“背景点击”.
有没有人为这个案子提供一个好的解决方案?
解决方法:
不幸的是,他们在The official Plucker for Modal (ui.bootstrap.modal)处理它的方式.
如果你点击任何按钮它会记录如下:
Modal dismissed at: Thu Feb 23 2017 21:54:26 GMT-0300 (Pacific SA Daylight Time)
他们做的是:
modalInstance.result.then(function (selectedItem) {
$ctrl.selected = selectedItem;
}, function () {
$log.info('Modal dismissed at: ' + new Date());
});
如果你删除错误回调,猜猜你得到了什么:
Possibly unhandled rejection: backdrop click
甚至取消
Possibly unhandled rejection: cancel
到目前为止,您要么这样做,要么使用此解决方法来消除未处理的拒绝
app.config(['$qProvider', function ($qProvider) {
$qProvider.errorOnUnhandledRejections(false);
}]);
标签:javascript,angularjs,error-handling,angular-ui-bootstrap,angular-ui 来源: https://codeday.me/bug/20191007/1868396.html