나는 angularJS (각도 시드 사용)를 배우고 있으며, 나머지 사이트가로드되기 전에 JSON 피드에서 내 사이트 구성을로드해야합니다.AngularJS : 앱로드 전에 json 피드를로드하는 방법은 무엇입니까?
$ http 또는 $ resource를 사용하면 나머지 앱이로드 될 때까지 피드가 반환되지 않습니다.
나머지 앱보다 먼저이 데이터를로드하도록 앱을 강제하는 올바른 방법은 무엇입니까?
나는 angularJS (각도 시드 사용)를 배우고 있으며, 나머지 사이트가로드되기 전에 JSON 피드에서 내 사이트 구성을로드해야합니다.AngularJS : 앱로드 전에 json 피드를로드하는 방법은 무엇입니까?
$ http 또는 $ resource를 사용하면 나머지 앱이로드 될 때까지 피드가 반환되지 않습니다.
나머지 앱보다 먼저이 데이터를로드하도록 앱을 강제하는 올바른 방법은 무엇입니까?
Controller.resolve 메서드를 사용해야합니다. Misko (코어 앵글 개발자 중 한 명)의 대답을 확인하십시오. https://stackoverflow.com/a/11972028/726711
해결 방법을 사용하면 모든 단위 테스트가 손상되었습니다. 설정이 서비스 인이 방법을 사용했습니다.
$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;
}
}
감사합니다. 사이트 구성 컨트롤러를 만들었고이를 사용하여 필요한 모든 다른 컨트롤러에 포함 시켰습니다. 모든 일을하고 있지만 더 나은 방법이있을 것 같아요. – Bunkered
컨트롤러가 경로에 연결되어 있지 않으면 어떻게해야합니까? –