3

我正在使用 Angularjs 1.2.0rc1。我整天都在努力让角拦截器工作。我已将问题缩小为 $httpProvider.interceptors.push 似乎未定义,我不知道为什么,其他一切正常。

以下是示例代码:

services.factory('testInterceptor', function ($q) {
return {    
  'response': function(response) {
    console.log(response);
    return response || $q.when(response);
  },     
  'responseError': function(rejection) {
    console.log(rejection);
    return $q.reject(rejection);
  }
};
});

module.config我有以下代码。

$httpProvider.interceptors.push('testInterceptor');

如果我删除上面的代码,应用程序工作正常,但是如果它存在,我继续在我的控制台上收到这个错误

“未捕获的 TypeError:无法从 myModule 调用未定义的方法‘push’。”

myModule是模块的名称。

请注意,根据我的调查,“$httpProvider.interceptors”似乎是未定义的,我不知道为什么会这样,任何见解都会有所帮助。

感谢您提供的任何帮助/提示。

4

1 回答 1

1

您的配置是否如下所示?

myModule.config(['$httpProvider', function($httpProvider) {
  $httpProvider.interceptors.push('testInterceptor');
}]);

我使用拦截器,但内联导致此代码:

myModule.config(['$httpProvider', function($httpProvider) {
  $httpProvider.interceptors.push(function($q) {
    return {
        // optional method
        'request': function(config) {
            return config || $q.when(config);
        },

        // optional method
        'requestError': function(rejection) {
            return $q.reject(rejection);
        },

        // optional method
        'response': function(response) {
            return response || $q.when(response);
        },

        // optional method
        'responseError': function(rejection) {
            return $q.reject(rejection);
        }
    }
  })
}]);

但我似乎从来没有遇到过 requestError 或 responseError,即使服务器抛出 500 错误,但这看起来像是另一个问题。希望此代码示例有所帮助。

于 2013-12-03T19:43:37.173 回答