【发布时间】:2017-02-19 18:01:24
【问题描述】:
我一直在寻找这个问题的答案,但没有关于如何解决和解决这个问题的任何明确或明确的答案。
在我的 anguarJS 应用程序中,我想确保在加载/引导 AngularJS 之后的第一件事,它通过 $http 进入服务器并获取一些设置(通过调用 api:/api/settings/get) -取决于子域和/或如果有 JWT 或其他用户会话,它将检索一些应添加到 $rootScope 的设置数据。
我的问题是我无法“停止”应用程序,只有在获取设置并填充 $rootScope 时才能继续它的日常生活。如果 fetch 或 settings 调用可能失败,应用程序应该“停止” - 所以这些设置很早就加载是至关重要的,所以我知道一切(服务、控制器、指令等)都可以访问它们。
我已经尝试使用 $broadcast 事件并将其放入我的 .run 函数中,但它似乎仍然可以解决应用程序(可能显然是因为它是异步的)。
apiConnector.get('api/settings/get').then(function(settings) {
$rootScope.settings = settings;
$rootScope.$broadcast('settings-fetched');
});
但是,我不喜欢这种方法,并且要求我到处监听这个事件。
我的路线既公开又受限。
我希望有人可以帮助我解决这个问题的正确方向。
【问题讨论】:
-
您是否有机会在您的应用程序中使用 ui-router?如果是这样解决可能是一个很好的解决方案。
-
嗨,Erik,我忘记了那个细节。是的,我在我的项目中使用 ui.router。我将如何解决这个问题?我前段时间一直在尝试,但没有运气
标签: angularjs asynchronous angularjs-scope angularjs-rootscope angularjs-bootstrap