2

나는이 문제에 대한 답을 찾고 있었지만 해결 방법에 대해 명확하고 명확한 답을 얻지 못했습니다. 따라에 - 내 anguarJS 응용 프로그램에서후 처리 후 서버 설정 가져 오기 (다른 이름보다 먼저)

, 나는 그것이 $http을 통해 서버로 이동하고 (/api/settings/get라는 API에서) 일부 설정을 가져, AngularJS와 후 첫 번째 일이/부트 스트랩로드되어 있는지 확인하려면 하위 도메인 및/또는 JWT 또는 다른 사용자 세션이있는 경우 $rootScope에 추가해야하는 일부 설정 데이터를 검색합니다.

내 문제는 내가 앱을 "정지"할 수 없었고 설정을 가져 와서 $rootScope을 채울 때에 만 일상 생활을 계속할 수 없었다는 것이 었습니다. 가져 오기 또는 설정 호출이 중단 될 수있는 경우 응용 프로그램이 "중지"해야합니다. 따라서 모든 설정 (서비스, 컨트롤러, 지시문 등)에 액세스 할 수 있으므로 이러한 설정이 매우 일찍로드되는 것이 중요합니다.

나는 $broadcast 이벤트를 시도해보고 내 .run 함수에 넣었지만 여전히 비동기이기 때문에 앱을 해결하는 것으로 보입니다.

apiConnector.get('api/settings/get').then(function(settings) { 
    $rootScope.settings = settings; 
    $rootScope.$broadcast('settings-fetched'); 
}); 

그러나이 방법이 마음에 들지 않으며 어디에서나이 이벤트를 수신해야합니다.

내 경로가 공개되고 제한적입니다.

누군가가이 문제를 해결할 수있는 올바른 방향으로 나를 도울 수 있기를 바랍니다.

+0

어쩌면 앱에 ui-router를 사용하고 있습니까? 그렇다면 해결이 좋은 해결책이 될 수 있습니다. –

+0

안녕하세요, Erik, 세부 정보를 잊어 버렸습니다. 예, 저는 프로젝트에서 ui.router를 사용하고 있습니다. 어떻게 해결할 수 있습니까? 나는 운이없이 얼마 전에 그것을 시험해 보았습니다. – Mestika

답변

0

당신은 내가 당신의 기본 상태에 들어가기 전에 결의를 사용하는 것이 좋습니다 UI 라우터 사용하고 있기 때문에이 GET은 당신이 할 수있는 실패하면

$stateProvider.state('myState', { 
     resolve:{ 
     // Example using function with returned promise. 
     // This is the typical use case of resolve. 
     // You need to inject any services that you are 
     // using, e.g. apiConnector in this example 
     settingsObj: function(apiConnector){ 
      return apiConnector.get('api/settings/get'); 
     } 
} 

: UI를-라우터 문서에서 https://github.com/angular-ui/ui-router/wiki#resolve

예 경로 구성을 이 문제를 해결하기 위해 .then()을 사용하여 사용자를 앱이나 w/e에서 리디렉션하십시오. 일반적인 각도에서의 약속처럼.