2

在 AngularJS 响应错误拦截器中,有没有办法检索当前请求的范围?

module.controller('myController', function($http, $scope) {
    $scope.getData = function() {
        // This scope is which the request is originated
        $http.get('http://www.example.com/get', {
            params: { 'id': '1234' }
        }).success(function(data, status, headers, config) {
            // ...
        }).error(function(data, status, headers, config) {
            // ...
        });
    }
});

module.factory('myInterceptor', function($q) {
    return {
        'responseError': function(response) {
            // How can I get the scope of 'myController' here?
            return $q.reject(response);
        }
    };
});
4

1 回答 1

1

我认为您不能开箱即用地从工厂访问原始范围。工厂是单例的,不建议在其中使用范围。不过,我相信您可以将原始范围作为参数对象的一部分从您的控制器传递。

 params: { 'id': '1234', 'origScope': $scope }

更新

经过讨论......我想而不是访问这里的范围。您从拦截器发布事件并让范围或关联的控制器监听它。

有关更多信息,请参阅此链接:http: //toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

于 2015-02-06T03:57:45.513 回答