处理/记录角度资源错误的最佳方法

时间:2015-07-09 13:21:45

标签: angularjs resources

我正在尝试在我的角度Web应用程序中设置可靠的错误处理。在许多不同的控制器和指令中,我有很多使用各种源的api调用。理想情况下,我想以这样的方式处理资源错误:

EncryptorType

由于我在需要此功能的所有控制器/指令中注入$ scope,我是否能够定义一个资源错误方法,该方法可以在$ scope注入的任何地方访问?

1 个答案:

答案 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了解更多信息。