2015-02-06 2 views
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); 
     } 
    }; 
}); 

ответ

0

Я не думаю, что вы можете получить доступ к исходным областям с завода из коробки. Заводы - это одиночные игры, и в нем не рекомендуется играть с прицелом. Тем не менее, я считаю, что вы можете передать исходную область как часть объекта param из своего контроллера.

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

обновление

после последующего обсуждения ... Я думаю, что вместо того, чтобы получить доступ к сфере здесь. Вы публикуете событие от перехватчика, и его область наблюдения или соответствующий контроллер прослушивают его.

Обратитесь по ссылке для получения дополнительной информации: http://toddmotto.com/all-about-angulars-emit-broadcast-on-publish-subscribing/

+0

Параметр 'params' объект будет интерпретироваться как строка запроса в' запросов GET', верно? Имеет ли смысл передавать «область» в объект «params»? –

+0

Я подумал об этом, ну, вы можете «удалить config.params.origScope», прежде чем запрос действительно будет отправлен через –

+0

В принципе, как я уже сказал, это совсем не хороший дизайн для пропуска области до фабрики или сервиса. –

Смежные вопросы