我怎么知道我可以将哪些依赖项注入控制器?

How do I know what dependencies I can inject into a controller?

我正在尝试在我的控制器中使用 $routeProvider 依赖项:

.controller('mainController', function($scope, $state, $routeProvider) {

但我收到错误消息:

Error: [$injector:unpr] Unknown provider: $routeProviderProvider <- $routeProvider

我如何知道我可以将哪些依赖项注入到任何给定的控制器中?

您只能访问控制器中的服务,而不能访问提供程序,因此请在此处使用 $route

因此您收到错误 $routeProviderProvider 因为它正在寻找 $routeProvider 的提供者,它本身就是 $route.[=14 的提供者=]

Docs

里面有两相angular

  1. 配置阶段(这里我们用app.config写一段代码)
  2. 运行 阶段(我们使用 app.run,在 运行 循环之后所有其他指令都使用编译循环执行)

Provider 只是 service/factory 但最重要的是它可以在配置阶段访问。

例子

假设我们有以下供应商

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

注:

Provider are always accessible inside .config(configuration) phase with suffix Provider in their name, While inside controller you could > directly inject it using unicornLauncher (direct provider name)

Services/Factory They are not visible in config phase of angular

还是一头雾水再参考this link