我正在尝试在我的控制器中使用$routeProvider
依赖项:
.controller('mainController', function($scope, $state, $routeProvider) {
但我收到错误:
Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider
我怎么知道我可以注入任何给定控制器的依赖项?
答案 0 :(得分:2)
您只能访问控制器中的服务而非访问者,因此请在此处使用$route
。
因此您收到错误 $ routeProviderProvider 因为它正在寻找$routeProvider
的提供商,$route
本身就是{{1}}的提供商。
答案 1 :(得分:2)
角度内有两个阶段
app.config
编写代码)app.run
的地方,在运行循环后,所有其他指令都使用编译循环执行)提供商只是服务/工厂,但最重要的是它可以在配置阶段内访问。
示例强>
假设我们有以下提供者
myApp.provider('unicornLauncher', function UnicornLauncherProvider() {
var useTinfoilShielding = false;
this.useTinfoilShielding = function(value) {
useTinfoilShielding = !!value;
};
this.$get = ["apiToken", function unicornLauncherFactory(apiToken) {
return new UnicornLauncher(apiToken, useTinfoilShielding);
}];
});
在将其注入配置内容时,您应始终将其Provider
添加为unicornLauncherProvider
在控制器中使用它时,您可以将其用作unicornLauncher
注意:强>
始终可以在.config
内访问提供商(配置) 在其名称中带有后缀
直接注入它Provider
的阶段,而在控制器内部,您可以&gt;使用unicornLauncher
(直接提供者名称)服务/工厂它们在角度
的配置阶段中不可见
仍然混淆然后请参考this link