Javascript 如何在加载JSON之前暂停角度执行?

Javascript 如何在加载JSON之前暂停角度执行?,javascript,json,angularjs,asynchronous,synchronous,Javascript,Json,Angularjs,Asynchronous,Synchronous,我有一个angular应用程序,需要从一些JSON加载应用程序配置数据,它被封装在一个服务中,注入控制器。问题是我需要控制器等待json成功加载。换句话说,同步加载它。我想请求这个json文件,并让应用程序在我们得到它之前什么都不做。我不知道“正确的角度”方法是什么,建议?使用angular.bootstrap()初始化应用程序 var myApp = angular.module('myApp', []); //declare the rest of myApp, e.g. myApp.con

我有一个angular应用程序,需要从一些JSON加载应用程序配置数据,它被封装在一个服务中,注入控制器。问题是我需要控制器等待json成功加载。换句话说,同步加载它。我想请求这个json文件,并让应用程序在我们得到它之前什么都不做。我不知道“正确的角度”方法是什么,建议?

使用
angular.bootstrap()
初始化应用程序

var myApp = angular.module('myApp', []);
//declare the rest of myApp, e.g. myApp.controller(...

angular.element(document).ready(function() {
    jQuery.getJSON('/api/my-app/config', function(data) {
        //do whatever you wish with `data`
        angular.bootstrap(document.getElementById('my-app'), ['myApp']);
    });        
});
注:

  • 请随意使用任何其他方法获取配置JSON,不必是
    jQuery.getJSON()
  • 而不是
    angular.element(document).ready()和AJAX调用中的两个嵌套回调,
    考虑使用承诺,以便它们同时发生
  • 此代码未经测试,您可能需要对其进行一些调整

JavaScript在UI线程上运行,粗略地说,因此同步Ajax调用会使UI无响应。最好改用异步调用,并允许您的控制器处于“加载”状态。您可以在获得数据后手动引导,而不是使用
ng app
自动初始化。这正是我要找的,谢谢。在这种情况下,在数据传输之前引导应用程序是没有意义的。嗯,当我以这种方式引导它时,路由似乎不会执行,知道为什么会发生这种情况吗?没关系,只是必须将代码块移低。=)@IainDuncan你把它移低是什么意思-
var myApp=angular.module…
先来?是的,我必须把代码移到第一个模块定义下面的文件底部,然后就可以了!