2

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

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

但我收到错误:

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

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

4

2 回答 2

2

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

因此,您会收到错误$routeProviderProvider,因为它正在寻找$routeProvider本身就是$route.

文档

于 2015-03-27T04:47:12.907 回答
2

角度内部有两个阶段

  1. 配置阶段(这里我们app.config用来写一段代码)
  2. 运行阶段(我们使用的地方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,而在控制器内部,您可以>使用unicornLauncher(直接提供者名称)直接注入它

服务/工厂它们在角度的配置阶段不可见

仍然感到困惑然后请参考此链接

于 2015-03-27T05:14:10.300 回答