如果$ http调用出错,我有一种方法可以显示用户,我目前通过执行以下操作来调用它:
$http({
//do stuff
}).
error(function(){
$scope.$broadcast('error');
});
我有一个使用$ on监听错误的指令。
但是我最后在每次使用$ http时都重复$ broadcast,是否可以扩展默认错误回调以每次广播错误?
答案 0 :(得分:3)
我建议您使用响应拦截器。
您可以在AngularJS API Reference上找到详细信息,但这就是它的工作原理:
angular.module('app', []);
angular.module('app').factory('myHttpErrorInterceptor', function ($q) {
return {
'responseError': function (rejection) {
console.log('DEBUG: Status:', rejection.status);
return $q.reject(rejection);
}
};
});
angular.module('app').config(function ($httpProvider) {
$httpProvider.interceptors.push('myHttpErrorInterceptor');
});
angular.module('app').run(function ($http) {
$http.get('http://example.org/that-doesnt-exist');
});
而不是我的console.log
,您可以改为播放您的错误。
您可以找到实时示例here。