Angular中广播的站点范围错误消息

时间:2014-03-08 21:11:20

标签: javascript angularjs

如果$ http调用出错,我有一种方法可以显示用户,我目前通过执行以下操作来调用它:

$http({

  //do stuff

}).
error(function(){
  $scope.$broadcast('error');
});

我有一个使用$ on监听错误的指令。

但是我最后在每次使用$ http时都重复$ broadcast,是否可以扩展默认错误回调以每次广播错误?

1 个答案:

答案 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