Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/444.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何知道可以将哪些依赖项注入控制器?_Javascript_Angularjs_Dependency Injection_Angularjs Controller_Angularjs Provider - Fatal编程技术网

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
    直接注入它(直接提供程序名称)

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

    仍然困惑,那么请参考