每次使用任何$资源命中服务器时,我都希望在用户失败时向其显示相同的警报。
今天看起来像:
function tryAgain() { alert("try again") }
myResource.query().$promise.catch(tryAgain);
myResource.update(...).$promise.catch(tryAgain);
myResource.delete(...).$promise.catch(tryAgain);
otherResource.query().$promise.catch(tryAgain);
有没有办法为ngResource配置默认错误处理函数?我正在寻找类似的东西:
$resource.somethingMagicHere.defaults.catch(tryAgain);
答案 0 :(得分:6)
您可以在app.config()
部分使用interceptor。这将捕获源自$http
$resource
使用的$httpProvider.interceptors.push(function($q) {
return {
'responseError': function(response) {
if (response.status == 401) {
// Handle 401 error code
}
if (response.status == 500) {
// Handle 500 error code
}
// Always reject (or resolve) the deferred you're given
return $q.reject(response);
}
};
});
的所有响应错误。
{{1}}
答案 1 :(得分:1)
@kba的答案帮助我找到了路径。以下文章让我理解:
http://www.webdeveasy.com/interceptors-in-angularjs-and-useful-examples/
答案 2 :(得分:0)
只需声明一次并重复使用:
var defaultErrorHandler = function() {
alert("try again")
}
myResource.query(...).$promise.catch(defaultErrorHandler());
myResource.update(...).$promise.catch(defaultErrorHandler());
...