我在我的角应用程序中使用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
答案 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。