angularJS (angular-seed を使用) を学習しているだけで、サイトの残りの部分が読み込まれる前に、JSON フィードからサイト構成を読み込む必要があります。
残念ながら、$http または $resource を使用すると、アプリの残りの部分が読み込まれるのに間に合うようにフィードが返されません。
アプリの残りの部分より前にこのデータを強制的にロードする正しい方法は何ですか?
Controller.resolve メソッドを使用する必要があります。Misko (コア Angular 開発者の 1 人) の回答を確認してください https://stackoverflow.com/a/11972028/726711
resolve メソッドを使用すると、すべての単体テストが壊れました...設定がサービスであるこの方法を使用しました。
$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;
}
}