在初始化路由之前发送$ http请求?

时间:2015-03-16 18:01:21

标签: javascript angularjs asynchronous angular-ui-router angular-promise

我有一个$rootScope.$on("$stateChangeStart")事件更改标题描述
 我必须在我的$rootScope中使用$http请求之后创建的event 对象问题是当$stateChangeStart事件已运行,我的object未定义。

我尝试在resolve州使用ui-router。但它仅适用于控制器,而不适用于event

你可以帮我提出一个解决方案,将在路由开始之前运行我的服务(使用$http请求)(并且$stateChangeStart事件运行),并且它赢了在状态更改后再次运行此服务。

1 个答案:

答案 0 :(得分:2)

我决定尝试用promise

来解决这个问题
$rootScope.$on("$stateChangeStart", function(event, toState, toParams, fromState, fromParams){

    if ($rootScope.myObj) { // if my "object" was already created
        eventLogic();
    } else {
        getMyObj.init().then(function(res){ //call service that retuns a promise
            eventLogic();
        });
    }

    function eventLogic() {
        ...
    }
}

这个解决方案完全解决了我的问题。它等待创建$rootScope.myObj,并且只运行一次此服务。