我在我的角度app.run()
方法中調用API以獲取一些數據,然後將其附加到$rootScope
- 應用程序在各個位置都需要此數據,所以這似乎對我來說是有意義的,因爲它是獲得它的地方。在繼續之前等待在AngularJS中解析的承諾
代碼是:
var app = angular.module('app', ['ngAnimate', 'infinite-scroll', 'ui.router', 'ui.bootstrap', 'app.filters', 'app.services', 'app.directives', 'app.controllers'])
.run(['$templateCache', '$rootScope', '$state', '$stateParams', '$modalStack', 'appInit', function ($templateCache, $rootScope, $state, $stateParams,$modalStack, appInit) {
// set loading to 0 for loading mask
$rootScope.loading = 0;
var globalPromise = appInit.getGlobal();//
//var globalPromise = appInit.getGlobal();
globalPromise.then(function (data) {
// attach globalJSON to rootScope
$rootScope.globalJSON = data;
});
}]);
所以,我需要globalPromise.then()
得到滿足之前的應用程序的其餘部分可以運行。
我的問題是,有時globalPromise
需要一點時間來恢復比它需要一些控制器來執行,並建立模板的 - 在這種情況下在模板中的一些指令需要一個$rootScope.globalJSON
可用。當它不是,那些指令&任何其他需要它,錯誤了。
有沒有辦法暫停應用程序,直到該承諾已履行完畢?或者我應該分離出角度和引導角度之後?
'$ rootScope。$ state = $ state; $ rootScope。$ stateParams = $ stateParams;'你爲什麼要這樣做? – Gabe
這是其他領域需要的 - 沒有發佈每一行代碼,儘管這部分與我的問題無關。 – Darren