在初始化路由之前发送 $http 请求?
Send $http request before initialize routing?
我有一个 $rootScope.$on("$stateChangeStart")
事件改变了 title 和 description.
而且我必须在 event
.[=33= 中使用 $http
请求后创建的 $rootScope
对象 ] 问题是当 $stateChangeStart
事件 运行s 时,我的 object
是未定义的。
我曾尝试在 ui-router
状态下使用 resolve
。但它仅适用于控制器,不适用于event
。
你能帮我想出一个解决方案,在路由开始之前 运行 我的服务(使用 $http
请求)(和 $stateChangeStart
事件 运行s),并且在状态更改后它不会再次 运行 此服务。
我决定尝试用 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
并且只运行该服务一次。
我有一个 $rootScope.$on("$stateChangeStart")
事件改变了 title 和 description.
而且我必须在 event
.[=33= 中使用 $http
请求后创建的 $rootScope
对象 ] 问题是当 $stateChangeStart
事件 运行s 时,我的 object
是未定义的。
我曾尝试在 ui-router
状态下使用 resolve
。但它仅适用于控制器,不适用于event
。
你能帮我想出一个解决方案,在路由开始之前 运行 我的服务(使用 $http
请求)(和 $stateChangeStart
事件 运行s),并且在状态更改后它不会再次 运行 此服务。
我决定尝试用 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
并且只运行该服务一次。