我有一个$rootScope.$on("$stateChangeStart")
事件更改标题和描述。
我必须在我的$rootScope
中使用$http
请求之后创建的event
对象。问题是当$stateChangeStart
事件已运行,我的object
未定义。
我尝试在resolve
州使用ui-router
。但它仅适用于控制器,而不适用于event
。
你可以帮我提出一个解决方案,将在路由开始之前运行我的服务(使用$http
请求)(并且$stateChangeStart
事件运行),并且它赢了在状态更改后再次运行此服务。
答案 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
,并且只运行一次此服务。