如何在AngularJS中的Run块中等待一个Promise?

17 浏览
0 Comments

如何在AngularJS中的Run块中等待一个Promise?

在引导(bootstrapping)angular之前,我真的需要一些数据被加载。为此,我创建了一个 run 块。在这个 run 块中,我调用了一个服务的方法,从服务器加载一些数据。由于这是异步调用,JavaScript继续执行,导致一些未定义的对象出现在我的应用程序中。

我正在使用路由,但不能使用 resolve 属性。

有人能够提供一个解决方案,如何在 run 块中等待承诺被准备好?

编辑:

感谢提供的答案,我通过手动引导angular解决了这个问题:

$(document).ready(function () {
    $.ajax('/Data/GetDropdownData', {type:'POST'}).done(function (response) {
        app.run(['ListService',  function (ListService) {
            ListService.setData(response);
        }])
        angular.bootstrap(document, ["sma"]);
    })
})

admin 更改状态以发布 2023年5月22日
0
0 Comments

如我之前所评论的,将其放在这里

你可以尝试手动引导


当然,在这种情况下,您不能使用控制器和以 angular 方式获取数据。我认为您需要使用 jQuery 加载数据,在 jQuery 回调中引导您的 angular,然后使用从 jquery 获取的数据初始化您的作用域变量。

0
0 Comments

您可能想查看这个SO问题 - 它展示了如何使用异步数据初始化AngularJS服务。

这里是这个问题的一个plunkr示例,展示了使用AngularJS服务比如$http来加载配置,然后进行进一步的初始化。

这个答案给出了很好的解释,并展示了如何等待DOM加载,像这样(该答案的plunkr示例在这里):

angular.element(document).ready(function() {
  angular.bootstrap(document);
});

0