首先让我说我是角度的菜鸟,所以我怀疑基于我缺乏理解的一个非常愚蠢的错误。
我正在尝试创建一个拦截器来处理请求和响应错误。
如果我在文件顶部放置一个警报,它就会被调用,所以它正在加载文件。但是没有其他警报,包括文件底部和调用配置之前的警报。responseError 和 requestError 永远不会被调用...
我已经尝试将其简化到重现问题的最低限度,我尝试了几个不同的示例来说明如何实现它,以防我使用过时的代码,我尝试注释掉控制器中的错误子句以防它吞下例外.....我大部分时间都在用谷歌搜索试图让它工作,我很难过。
$provide.factory('myHttpInterceptor', function ($q, dependency1, dependency2) {
return {
'responseError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
'requestError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
alert('myHttpInterceptor done');
module.config(['$httpProvider', function ($httpProvider) {
alert('myHttpInterceptor push');
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
非常感谢任何帮助,尤其是对深入了解正在发生的事情的帮助
----为后人解答相关信息----
基于 sbedulins 和 Angad 答案的组合,我能够让它工作。
首先,一旦我得到它的工作,它可以在responeError和RequestError周围使用和不使用单引号......
dependency1 和 2 是未定义的,并且来自我在 SO 上得到的简化示例中的剪切和粘贴错误。所以我删除了它们。
然后我用 angular.module('defaultApp') 替换了模块,所以模块是示例中的占位符,而不是某种方便的全局存储它......你需要明确定义你的模块,(或变量模块)(是的,我真的是角度的新手)
因此,一旦将所有这些更改应用于 sbedulins 示例,我就在这里为这两种方法获得了工作代码,因为 postetity 这里是我的应用程序中的实际工作代码
angular.module('defaultApp').config(['$provide', '$httpProvider', function ($provide, $httpProvider) {
$provide.factory('myHttpInterceptor', function ($q) {
return {
responseError: function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
requestError: function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
$httpProvider.interceptors.push('myHttpInterceptor');
}]);
或者
angular.module('defaultApp').config(['$httpProvider', function ($httpProvider) {
$httpProvider.interceptors.push(function ( $q ) {
return {
'responseError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
},
'requestError': function (rejection) {
alert("Something went wrong");
return $q.reject(rejection);
}
};
});
}]);
非常感谢您的所有帮助,我在示例中学到了有关角度速记的重要知识。sbedulin 得到了答案,即使我需要评论的帮助才能得到他/她的答案