AngularJS - $ httpProvider拦截器处理和修改响应数据

时间:2014-01-21 15:53:52

标签: angularjs http response interceptor

我想使用拦截器进行状态代码错误处理。例如,当我通过$route加载模板并且我没有权限这样做时,我将从服务器发回403状态代码以及一些html数据,我想显示而不是最初请求的模板。这可能在'responseError'函数中的拦截器内吗?

'responseError': function(rejection) {
  // do something on error EXAMPLE
  if (canRecover(rejection.htmlData)) {
    return responseOrNewPromise //here I want to add my server error html data and return that to the client instead of the originally requested data 
  }
  return $q.reject(rejection);
}

我知道,我可以进行location.path更改,但我想保存额外的路由。

1 个答案:

答案 0 :(得分:2)

来自ngRoute docs

  

$ routeChangeError

     

如果任何解决承诺被拒绝,则广播。

在拒绝承诺解析时添加事件监听器

app.run(function($rootScope){
   $rootScope.$on('$routeChangeError',function(angularEvent,current,previous,rejection){

     // console.log(rejection)

   })
})

我还推荐这些教程: