我正在使用AngularJs构建一个应用程序,就在app的开头我需要从服务器加载一些数据。这些数据对于应用程序的功能至关重要,因此需要在用户访问视图/控制器之前加载它们。
要加载此数据,我需要从.run
加载并存储在.factory
中,以便我以后可以获取。
问题是,我需要加载多个小块数据,如用户数据,订单,支持票据等。因为每个用户都有一些访问限制,所以这些http是分开的。这就是我的.run的样子:
angular.module('mainApp').run(mainRun);
function empresaRun(factoryRequest,factoryStore) {
factoryRequest.methodGet('getData1').then(function(response){
factoryStore.setData(response);
})
factoryRequest.methodGet('getData2').then(function(response){
factoryStore.setData2(response);
})
[... etc ...]
}
总是提出第一个请求,但其他请求不一致..有时他们在移动到.controller之前没有加载来从facotryStore获取数据并在屏幕上显示。
有没有办法在所有请求发出后从.run移动? 或者,有没有更好的方法来实现这一结果?在运行其他任何东西之前加载数据?
答案 0 :(得分:0)
这是在每次状态更改之前如何确保数据加载的方式
N!乙!我不知道,这对你的延迟加载有什么作用
$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {
if (userService.userIsLoaded(toParams.userId)) {
//some logic, with the loaded user data or permissions
} else {
event.preventDefault();
userService.loadUserData(toParams.userId)
.then(DoSomethingElseWithData)
.then(function () {
//trigger state change
$state.go(toState.name, toParams);
});
}
});