在初始化路由之前发送$http请求
Send $http request before initialize routing?
我有一个更改标题和描述的$rootScope.$on("$stateChangeStart")
事件。
而且我必须在我的event
中使用$http
请求后创建的$rootScope
对象。问题是当$stateChangeStart
事件运行时,我的object
是未定义的。
我试图在我的ui-router
州使用resolve
。但它仅适用于控制器,不适用于event
.
您能否帮助我想出一个解决方案,该解决方案将在路由开始(并且$stateChangeStart
事件运行)之前运行我的服务(带有$http
请求),并且在状态更改后它不会再次运行此服务。
我决定尝试用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
,并且仅运行此服务一次。
相关文章:
- Meteor如何接收HTTP请求
- 在我的情况下,如何进行http请求
- 使用插件收听Firefox标签的http请求
- http请求使用html而不是json进行响应
- 在node-js路由中发出http请求
- 是否可以在没有HTTP请求或<输入>
- Acync JS HTTP请求通知请求
- PhantomJs在控制台中发出http请求时不会返回任何状态
- PHP处理来自一个页面的http请求,并将其显示在另一个页面上
- Firefox插件-如何发出http请求
- 验收测试主要针对传出的http请求
- 验证HTTP请求来自NFC标签上的点击
- 如何制作'http请求'在Node js中同步
- 为什么我在Cloud9中的http请求总是返回错误
- AngularJS Typeahead和$http请求限制
- HTTP请求使用cURL,但在浏览器中使用javascript时会得到CORS响应
- 如何使用Chrome扩展API获取网页的所有HTTP请求
- 将http请求中的数据传递给C#控制器
- 在初始化路由之前发送$http请求
- 从客户端捕获 HTTP 请求(包括 ajax)