2012-11-09 3 views
9

나는 angularJS (각도 시드 사용)를 배우고 있으며, 나머지 사이트가로드되기 전에 JSON 피드에서 내 사이트 구성을로드해야합니다.AngularJS : 앱로드 전에 json 피드를로드하는 방법은 무엇입니까?

$ http 또는 $ resource를 사용하면 나머지 앱이로드 될 때까지 피드가 반환되지 않습니다.

나머지 앱보다 먼저이 데이터를로드하도록 앱을 강제하는 올바른 방법은 무엇입니까?

답변

5

Controller.resolve 메서드를 사용해야합니다. Misko (코어 앵글 개발자 중 한 명)의 대답을 확인하십시오. https://stackoverflow.com/a/11972028/726711

+0

감사합니다. 사이트 구성 컨트롤러를 만들었고이를 사용하여 필요한 모든 다른 컨트롤러에 포함 시켰습니다. 모든 일을하고 있지만 더 나은 방법이있을 것 같아요. – Bunkered

+5

컨트롤러가 경로에 연결되어 있지 않으면 어떻게해야합니까? –

0

해결 방법을 사용하면 모든 단위 테스트가 손상되었습니다. 설정이 서비스 인이 방법을 사용했습니다.

$q.when(settings.loadConfig()).then(function() { 
    console.log(settings.versionedApiUrl); 
}); 

그런 다음 이미 두 번 이상 요청하지 않도록 설정을로드했는지 확인합니다.

class settings { 
    loadConfig = ():angular.IPromise<any> => { 

       var deferred = this.q.defer(); 

       if(this.settingsLoaded ){ 
         deferred.resolve({}) 
         return deferred.promise; 
       } 

       this.http({ 
         url:'config.json' 
       }).then((result) => { 

         if(result.data){ 
          this.versionedApiUrl = result.data.versionedApiUrl; 
          this.apiServer = result.data.apiServer; 
          this.widgetServiceRoot = result.data.widgetServiceRoot; 
          this.settingsLoaded = true; 
         } 

         deferred.resolve({}); 
       }); 
       return deferred.promise; 
      } 
} 
관련 문제