AngularJS在.run中等待资源

时间:2016-05-06 15:57:52

标签: javascript angularjs promise

我有一个AngularJS应用程序,在.run函数中,我从服务器获取我的网站设置并将它们添加到根范围。

<!DOCTYPE html>
<html>
<body>
    <img src="http://i.stack.imgur.com/MA0ZA.png">
</body>
</html>

我需要在其他控制器中访问这些设置。在其他控制器开始加载之前,我怎么能等待它准备就绪?

仅供参考,这是资源服务:

.run(function ($rootScope, SettingResource) {
    // Get the site settings (could be done in app controller?)
    $rootScope.SiteSettings = SettingResource.get();
});

2 个答案:

答案 0 :(得分:0)

好像你应该可以在这里使用$ q.all,虽然我自己从未尝试过。

类似的东西:

.run(function ($rootScope, SettingResource) {
    $q.all(SettingResource.get().then(function(data) {
        rootScope.SiteSettings = data;
        console.log("ok, I'm done here.")
     });    
});

如果SettingsResource基于$ resource,它不会像直接调用$ http.get那样返回promises。请查看此答案以了解我认为类似情况的更多详情:Angular Resource calls and $q

答案 1 :(得分:0)

我猜目前有角度并不支持一种简单的方法, 你可以在这里找到一个讨论:

https://github.com/angular/angular.js/issues/4003