微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Angularjs接收钩子还是类似的?

如何解决Angularjs接收钩子还是类似的?

我为Gloopy提供了+1的解决方案,但是,他所引用的其他文章在配置和拦截器中定义的函数中进行了DOM操作。相反,我将启动微调器的逻辑移到了拦截器的顶部,并在中使用了一个变量$rootScope来控制微调器的隐藏/显示。它似乎工作得很好,我相信它更具可测试性。

<img ng-show="polling" src="images/ajax-loader.gif">



angular.module('myApp.services', ['ngResource']).
.config(function ($httpProvider) {
    $httpProvider.responseInterceptors.push('myHttpInterceptor');
    var spinnerFunction = function (data, headersGetter) {
        return data;
    };
    $httpProvider.defaults.transformRequest.push(spinnerFunction);
})
//register the interceptor as a service, intercepts ALL angular ajax http calls
.factory('myHttpInterceptor', function ($q, $window, $rootScope) {
    return function (promise) {
        $rootScope.polling = true;
        return promise.then(function (response) {
            $rootScope.polling = false;
            return response;
        }, function (response) {
            $rootScope.polling = false;
            $rootScope.network_error = true;
            return $q.reject(response);
        });
    };
})
// other code left out

解决方法

是否有一种方法可以在每次从服务器返回响应后都调用一个函数,而无需在回调之后显式调用它?

主要目的是,我确实有一个通用的错误处理程序服务,可以在每个请求的回调中调用该服务,并且希望在某处指定该服务,然后该服务将自动被调用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。