2016-11-17 6 views
0

ES6 모듈 및 import 문을 사용하기 위해 기존 각도 프로젝트를 리팩토링하려고합니다. 이것은 대부분의 애플리케이션에서 작동하지만 내 경로의 resolve 블록이 문제를 일으 킵니다.AngularJS : route.resolve in ES6

지금까지 내가 이전과 동일해야 구문을 말할 수

:

$stateProvider.state('stateName'), { 
    template: <div></div> 
    controller: 'stateCtrl' 
    controllerAs: 'ctrl' 
    resolve: { 
     someData: ['DataService', function(DataService){ 
      return DataService.getData(); 
     }] 
    } 
} 

그러나 someData에 중단 점을 설정 내 'DataService의이'angulars 의존성 주입에 의해 제대로 해결되지 것을 알려줍니다 (또는 오히려 : 제대로 처리되었지만 아직 초기화되지 않았습니다.) 서비스는 해당 모듈에 등록되지만 someData -function을 입력하기 전에 생성자가 호출되지 않았습니다.

나는 구문을 잘못 생각 했으므로 비트를 실험 해본 결과 동일한 구문으로 생성되고 DataService과 동일한 모듈에 등록 된 다른 서비스가 실제로 초기화되고 resolve-block 내에서 올바르게 주입된다는 사실을 발견했습니다. .

어디서 볼 수 있는지 또는 어떻게 해결할 수 있는지 알고 계십니까? 당신이 ES6를 사용하는 경우

답변

1

,이 같아야합니다 ngInject가 ng-annotate GitHub의 페이지를 참조하십시오에 대해

/* @ngInject */ 
export default function config($stateProvider) { 
    resolve: { 

    /* @ngInject */ 
    someData: (DataService) => DataService.getData() 
    } 
} 

이 조금 더 읽을 수 있습니다. 그것은 당신을 위해 주사를합니다.

+0

그래,하지만이 식별자를 사용하려면 배열 식별자가 필요하다. 위의 내용은'function (Dataservice) {return Dataservice.getData();}의 또 다른 구문입니다. –

+0

잘 사용했습니다/* @ngInject */응답을 업데이트하겠습니다 – rrd

+0

감사합니다 - - 노턴! :) 그 사이에 나는 왜 그것이 인스턴스화 될 수 없었던'DataService'의 중첩 된 의존성을 포함하는 것을 잊었다 고 알았습니다. 위의 구문은 잘 작동합니다! –