AngularJs在运行中等待响应

时间:2016-02-28 23:14:15

标签: angularjs angularjs-service

我正在使用AngularJs构建一个应用程序,就在app的开头我需要从服务器加载一些数据。这些数据对于应用程序的功能至关重要,因此需要在用户访问视图/控制器之前加载它们。

要加载此数据,我需要从.run加载并存储在.factory中,以便我以后可以获取。

问题是,我需要加载多个小块数据,如用户数据,订单,支持票据等。因为每个用户都有一些访问限制,所以这些http是分开的。这就是我的.run的样子:

.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移动? 或者,有没有更好的方法来实现这一结果?在运行其他任何东西之前加载数据?

1 个答案:

答案 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);

                       });
            }
    });