我正在尝试在我的角度Web应用程序中设置可靠的错误处理。在许多不同的控制器和指令中,我有很多使用各种源的api调用。理想情况下,我想以这样的方式处理资源错误:
EncryptorType
由于我在需要此功能的所有控制器/指令中注入$ scope,我是否能够定义一个资源错误方法,该方法可以在$ scope注入的任何地方访问?
答案 0 :(得分:1)
拦截器可能会帮助你。而不是每次都编写错误处理函数,你可以将你的函数绑定到根作用域并从“responseError”拦截器调用它。 在这里我绑定一个函数来打开错误模型到$ rootScope,我从拦截器调用它。你可以找到下面的例子。
示例代码:
(function (global) {
"use strict";
angular.module("TestAPp").factory('httpInterceptor', ["$rootScope", "$q", function ($rootScope, $q) {
return {
responseError: function (response) {
/* Open Error model and display error */
$rootScope.openErrorModel(response);
/* reject deffered object so that it'll reach error block , else it'll execute success function */
return $q.reject(response);
}
};
}]);
}(this));
//注册拦截器
(function (global) {
"use strict";
angular.module("TestApp", [])
.config([ '$httpProvider',function ($httpProvider) {
/* Register the interceptor */
$httpProvider.interceptors.push('httpInterceptor');
}]);
}(this));
PS:我的openErrorModel定义
$rootScope.openErrorModel = function (error) {
$rootScope.errorMessage = error.data;
$('#errorModal').modal('show');
};
您可以参考Error Handling in angular了解更多信息。