Javascript 如何知道可以将哪些依赖项注入控制器?
我试图在控制器内使用Javascript 如何知道可以将哪些依赖项注入控制器?,javascript,angularjs,dependency-injection,angularjs-controller,angularjs-provider,Javascript,Angularjs,Dependency Injection,Angularjs Controller,Angularjs Provider,我试图在控制器内使用$routeProvider依赖项: .controller('mainController', function($scope, $state, $routeProvider) { 但我得到了一个错误: Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider 错误:[$injector:unpr]未知提供程序:$routeProviderProvider您
$routeProvider
依赖项:
.controller('mainController', function($scope, $state, $routeProvider) {
但我得到了一个错误:
Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider
错误:[$injector:unpr]未知提供程序:$routeProviderProvider您只能访问控制器中的服务,而不能访问提供程序,因此请在此处使用$route
因此,您将得到错误$routeProviderProvider,因为它正在查找$routeProvider
的提供程序,而该提供程序本身就是$route
的提供程序
在角点内有两个相位
配置阶段(这里我们使用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
,就像unicornlaunchprovider
在控制器内部使用时,您可以将其用作unicornLauncher
注意:
提供程序始终可以在.config
中访问(配置)
名称中带有后缀Provider
的阶段,而在控制器内部,您可以>使用unicornLauncher
直接注入它(直接提供程序名称)
服务/工厂它们在配置阶段不可见
仍然困惑,那么请参考