加载所有脚本和服务器数据后引导AngularJS

加载所有脚本和服务器数据后引导AngularJS,angularjs,Angularjs,如何延迟AngularJS的动态引导过程,直到获取所有脚本和初始服务器数据 目前我做了以下工作: angular.element(document).ready(function() { var $injector = angular.injector(['ng']); var $http = $injector.get('$http'); $http.get('get the permissions'). success(function(data, s

如何延迟AngularJS的动态引导过程,直到获取所有脚本和初始服务器数据

目前我做了以下工作:

angular.element(document).ready(function() {
    var $injector = angular.injector(['ng']);
    var $http = $injector.get('$http');
    $http.get('get the permissions').
        success(function(data, status) {
            fetchedPermissions = data.content;
            angular.bootstrap(document, ['ngRoute', 'appName']);
            console.log("angular bootstrapped");
        }).
        error(function(data, status) {
            console.log("angular bootstrap failed");
        });
});
头部的一部分:

<script src="modernizr-2.8.3.js" type="text/javascript"></script>
<script src="fastclick.js" type="text/javascript"></script>
... more scripts ...
<script src="angular-1.2.28.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
... several files containing controllers, directves and so on ...
然而,在我添加了越来越多的外部脚本之后,应用程序仍然可以启动,但是角度跑步部分不再被调用,页面保持空白。但是,在我再次重新加载页面后,它会工作。 因此,似乎并非所有脚本都是在angular的document ready启动之前获取的。 有没有关于如何进一步延迟引导过程的建议

编辑: 问题只会在网站第一次加载时出现。在我按下重新加载按钮后,一切似乎都很好

如何将AngularJS的动态引导过程延迟到 将获取所有脚本和服务器数据

Angulars引导过程在DOMContentLoaded事件上自动开始。在此之前,所有服务器数据都已加载。服务器数据在web服务器端加载,并作为html文档返回给用户。除非通过服务器获取数据,否则您的意思是通过ajax请求额外的数据

如果您希望像say modernizer这样的库在angular之前加载,只需将调用modernizer的标记放在调用angular的标记之前。在您的代码示例中,您已经在执行

如果您的意思是希望在其他javascript代码执行后引导angular,那就不同了。首先,如果你发现自己需要处理angular加载的时间,这应该告诉你你很可能做了一些非常错误的事情。。。但为了让其他javascript在angulars引导过程之前运行,您只需要在DOMContentLoaded事件之前运行它。当然,要做到这一点,最好还是把脚本放在调用angular的标记前面


你的问题不是angular启动时的问题,而是其他问题…

我想你可能在寻找一些东西。

我也有同样的问题。 你不能,你必须手动引导应用程序。 删除ng app属性或将其重命名为其他属性,并在您的文件完成手动加载引导应用程序后

编辑:该问题仅在第一次加载 网站在我按下重新加载按钮后,一切似乎都很好

这是因为第二次从浏览器缓存加载文件时

document.ready不会等待异步请求完成,因此您不能真正依赖它

您还可以使用$q来了解何时加载了所有资源并准备好引导应用程序。
$q

添加新脚本后是否检查了控制台?如果应用程序保持空白,可能您包含了一些破坏javascript执行的脚本?是的,我检查了控制台,获取了权限,没有错误。重新加载页面后,一切正常。所以这似乎是一个时间问题。@JonasH这不是时间问题,当angular开始引导过程时,没有必要更改。@Kirill:你说得对,这不是时间问题。我刚刚检查了控制台中的网络时间线,在所有脚本按预期方式加载后,DOMContentLoaded事件确实会被触发。但更奇怪的是,它只在第一页加载时发生。@JonasH是的,很抱歉,我不能帮助更多的信息:。