Javascript 延迟AngularJS中的整个页面加载,直到服务';s ajax已经完成了

Javascript 延迟AngularJS中的整个页面加载,直到服务';s ajax已经完成了,javascript,ajax,angularjs,deferred,pageload,Javascript,Ajax,Angularjs,Deferred,Pageload,在我的AngularJS项目中有一个configService,它通过ajax请求从服务器获取整个项目的一些配置值,例如,在激活用户帐户之前是否需要对用户的配置进行调节 为了根据配置显示信息,整个第一页加载应该推迟到ajax请求完成。我的服务看起来像: angular.module('clientApp').factory('configService', function ($http) { var configService = {}; var conf = {};

在我的AngularJS项目中有一个
configService
,它通过ajax请求从服务器获取整个项目的一些配置值,例如,在激活用户帐户之前是否需要对用户的配置进行调节

为了根据配置显示信息,整个第一页加载应该推迟到ajax请求完成。我的服务看起来像:

angular.module('clientApp').factory('configService', function ($http) {
    var configService = {};
    var conf = {};

    Object.defineProperty(configService, 'serverConfig', {
        get: function () {
            return conf;
        }
    });

    $http.get('/api/config').success(function (data) {
        conf = $.extend(conf, data);
    });

    return configService;
});
因此,由于该服务是单例的,因此仅在页面加载时执行一次,而不是在每次路由更改时执行

现在我知道了如何使用
$q
和promissions,但我的问题是如何将所有angular的执行延迟到该服务完成其请求为止?我的大多数视图都需要来自
configService.serverConfig
的值,并依赖于它来实现特定的行为-异步执行此操作并延迟
。然后()
在每个控制器中似乎不是最好的主意。


<html ng-app="yourApp">

angular.element(document).ready(function() {
  angular.bootstrap(document, ["yourApp"]);
});
元素(文档).ready(函数(){ 引导(文档,[“yourApp”]); });
也许手动引导应用程序可以帮助

如果不是这样的话,请查看此帖子!

我编写了一个angular模块,一旦所有初始ajax请求完成,它就会发出一个rootScope“ajaxComplete”事件

它使用角度拦截器,在发送新请求时重置计时器,并跟踪挂起请求的数量。然后,在所有响应返回且500毫秒内没有发送新请求时,考虑初始ajax请求是否已完成。git项目中有一个例子

快乐编码


您找到解决方案了吗?没有,只有一个解决方法(即不依赖于页面加载时可用的配置选项)。向上投票可能会增加机会:)