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' 요청 '에 쿼리 문자열로 해석됩니다? 'scope'를'params' 객체에 전달하는 것이 합리적입니까? –

+0

요청을 실제로 –

+0

이상으로 보내기 전에 config.params.origScope를 삭제할 수 있다고 생각했습니다. 기본적으로 말했듯이 공장이나 서비스까지 범위를 전달하는 것은 좋은 디자인이 아닙니다. –

관련 문제