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

我有一个$rootScope.$on(“$stateChangeStart”)事件,它改变了标题和描述.

 在我的事件中,我必须使用在$http请求之后创建的$rootScope对象.问题是当$stateChangeStart事件运行时,我的对象是未定义的.

我试图在我的ui-router状态下使用resolve.但它只适用于控制器,而不适用于事件.

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

最佳答案 我决定尝试用一个承诺解决这个问题:

$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,它只运行一次此服务.

点赞