AngularJS:如何在app加载之前加载json feed?

时间:2012-11-09 12:34:24

标签: json angularjs

我只是在学习angularJS(使用angular-seed),我需要在网站其余部分加载之前从JSON Feed加载我的网站配置。

不幸的是,使用$ http或$ resource并不能及时返回Feed,以便加载其他应用。

强制应用在应用其余部分之前加载此数据的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

您必须使用Controller.resolve方法。查看Misko的(核心角色开发者之一)回答https://stackoverflow.com/a/11972028/726711

答案 1 :(得分: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;
          }
}