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

时间:2014-09-03 12:14:20

标签: angularjs angular-routing angular-route-segment

我在我的角应用程序中使用angular-route-segment并尝试从json feed配置段。

我遇到了这个问题,因为我无法弄清楚如何将$http注入app.config函数。这与Unknown provider: $http

失败
myApp.config(["$http", "$routeSegmentProvider", function ($http, $routeSegmentProvider) {
   /* setup navigation here calling $routeSegmentProvider.when a number of times */
}

所以我没有向config注入$ http,而是尝试将$routeSegmentProvider注入myApp.run

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 */
}]);

我也试过

myApp.run(["$http", "$routeSegmentProvider", function($http, $routeSegmentProvider)

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

1 个答案:

答案 0 :(得分:12)

提供商只能注入&#34; config&#34;阶段,而不是&#34;运行&#34;相。相反,$ http等服务尚未在&#34; config&#34;中初始化。阶段,只有在&#34;运行&#34;相。

解决这个问题的一个小技巧是在父函数范围内定义一个变量,以便&#34; config&#34;并且&#34;运行&#34;块可以访问它:

var routeSegmentProvider = null;

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

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

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