2017-05-10 5 views
0

을 사용하여 인터셉터로 서비스의 의존성 주입을 할 수 있습니다. 나는 $ resource가 $ http와 비교하여 특이성을 가지고 있다는 것을 발견했다. 그러나 이것에 맞는 패턴을 찾을 수 없었다.

답변

1

인터셉터를 사용하여 직접 서비스를 삽입 할 수는 없지만 공장이나 서비스에서 $ resource을 래핑하고 $ resource.interceptor에 팩토리 종속성을 사용할 수 있습니다.

예는 아래 첨부 : ES6 방식으로 서비스를 가져올

angular.module('mainModule', ['ngResource']). 
factory("MyResource", ['$resource', 'SomeService', function ($resource, SomeService) { 
    return $resource(
     '/', { 
     someMethod: { 
      method: 'GET', 
      interceptor: { 
       response: function (data) { 
        // here you can use SomeService 
        console.log('response in interceptor', data); 
       }, 
       responseError: function (data) { 
        // here you can use SomeService 
        console.log('error in interceptor', data); 
       } 
      } 
     } 
    } 

    ); 
}]); 

방법 :

import mainModule from './mainModule'; 

class SomeController { 
    constructor($scope, SomeService) { 
     this.$scope = $scope; 
     this.SomeService= SomeService; 
    } 
} 

SomeController.$inject = ['$scope', 'SomeService']; 

mainModule.controller('SomeController', SomeController); 

유사한 방식으로 당신이 공장과 서비스뿐만 아니라 만들 수 있습니다.

+0

좋아, 고마워. 자, 여기 ES6이 있기 때문에 다른 서비스로 서비스를 가져 오는 방법을 찾아야합니다. – Olivvv

+0

괜찮아 보이는 군, 나는 또한 _을 주입하는 것을 잊어 버렸다. 좀 더 디버그하고 괜찮을 것입니다. – Olivvv

+0

ES6 방식으로 서비스를 가져 오는 방법이 추가되었습니다. –