9

angularJS (angular-seed を使用) を学習しているだけで、サイトの残りの部分が読み込まれる前に、JSON フィードからサイト構成を読み込む必要があります。

残念ながら、$http または $resource を使用すると、アプリの残りの部分が読み込まれるのに間に合うようにフィードが返されません。

アプリの残りの部分より前にこのデータを強制的にロードする正しい方法は何ですか?

4

2 に答える 2

5

Controller.resolve メソッドを使用する必要があります。Misko (コア Angular 開発者の 1 人) の回答を確認してください https://stackoverflow.com/a/11972028/726711

于 2012-11-09T13:22:28.590 に答える
0

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;
          }
}
于 2016-08-26T18:14:35.183 に答える