2017-03-19 1 views
0

Angular JS에서 ui-router를 사용할 때 onEnter 콜백에 어떤 종속성을 주입 할 수 있습니까? 특히 $ HTTP 서비스와 부모 모듈에 정의 된 상수를 사용하고 싶습니다. 내가 작업하고있는 코드는 모듈 설정에서 ui-router 상태를 정의합니다. 구성 코드에서 서비스를 사용할 수 없다는 것을 알고 있지만 어쩌면 구성 코드로 정의 된 콜백에서 사용할 수 있을까요? 어쨌든 다음 코드가 작동하는 것 같습니다. 나는 그것이 믿을만하지 않을까 걱정됩니다. 내 생각에 진짜 질문은 언제 의존성을 주입합니까? 함수가 정의 될 때 또는 함수가 호출 될 때이 일이 발생합니까?ui-router로 상태 변경을위한 onEnter 콜백에 의존성 주입

angular.module('sim', ['ui-router']). 
    constant('ENV', { 
     BASE_URL: '/simulation/secure' 
    }). 
    config(config); 

function config($stateProvider) { 
    $stateProvider 
     .state('root.training', { 
      url: '/training', 
      controller: 'trainingCtrl', 
      onEnter: function($http,ENV) 
      { 
       $http.get(ENV.BASE_URL + '/setIsRunning'); 
      } 
     }); 
}; 

답변

0

종속성은 함수가 호출 될 때 삽입됩니다. source code of ui-router을 보면 전환이 entering 일 때 상태 전환 중에 onEnter -callback이 호출됩니다. onEnter -callback에 대한 호출은 $injector.invoke() 함수를 사용하여 이루어지며 $injector의 종속성을 확인하고 angular documentation에 따라 메서드를 호출합니다. 따라서 거의 모든 종속성이 onEnter에서 사용하려면 유효해야합니다.