首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular将$http注入配置中,或将提供程序注入run中

Angular将$http注入配置中,或将提供程序注入run中
EN

Stack Overflow用户
提问于 2014-09-03 20:14:20
回答 1查看 12.6K关注 0票数 8

我在我的angular应用程序中使用了angular-route-segment,并尝试从json提要中配置分段。

我对此有问题,因为我不知道如何将$http注入到app.config函数中。对于Unknown provider: $http,此操作失败

代码语言:javascript
复制
myApp.config(["$http", "$routeSegmentProvider", function ($http, $routeSegmentProvider) {
   /* setup navigation here calling $routeSegmentProvider.when a number of times */
}

因此,我没有将$http注入config,而是尝试将$routeSegmentProvider注入myApp.run

代码语言:javascript
复制
myApp.run(["$http", "$routeSegment", function($http, $routeSegment) {
    /* can use $http here to get data, but $routeSegment is not the same here */
    /* $routeSegment does not have the when setup method */
}]);

我也试过了

代码语言:javascript
复制
myApp.run(["$http", "$routeSegmentProvider", function($http, $routeSegmentProvider)

但我得到了Unknown provider: $routeSegmentProviderProvider <- $routeSegmentProvider

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-09-03 20:24:14

提供者只能在"config“阶段注入,而不能在"run”阶段注入。相反,像$http这样的服务在“配置”阶段还没有初始化,只有在“运行”阶段才可用。

解决这个问题的一个小技巧是在父函数作用域中定义一个变量,以便"config“和"run”块都可以访问它:

代码语言:javascript
复制
var routeSegmentProvider = null;

myApp.config(["$routeSegmentProvider", function ($routeSegmentProvider) {
    routeSegmentProvider = $routeSegmentProvider;
}]);

myApp.run(["$http", function($http) {
  // access $http and routeSegmentProvider here
}]);

我不确定在run阶段尝试调用$routeSegmentProvider.setup()时是否会遇到问题,因为我还没有尝试过。在过去,我能够使用相同的技术向$httpProvider注册依赖于某些自定义服务的http响应拦截器。

票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25644039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档