不能注入AuthenticationController

Cannot inject AuthenticationController

本文关键字:AuthenticationController 注入 不能      更新时间:2023-09-26

我试图注入一个控制器到我的app.run函数,但我不断得到:

Uncaught Error: [$injector:unpr] http://errors.angularjs.org/1.2.10/$injector/unpr?p0=AuthenticationControllerProvider%20%3C-%20AuthenticationController 

这是我的app.js:

var app = angular.module('app', [
    'AuthenticationModule'
]);
app.run(['$rootScope', 'AuthenticationService', 'AuthenticationController',
    function($rootScope, AuthenticationService, AuthenticationController) {
        console.log(AuthenticationController);
    }
]);

AuthenticationService注射正常。为什么没有注入AuthenticationController ?

如AngularJS模块文档中所述:

运行块——在注入器被创建和使用后执行启动应用程序。只能是实例和常量注入运行块。这是为了防止进一步的系统

应用程序运行时的配置。

在控制器的文档中,它声明:

在Angular中,Controller是一个JavaScript 构造函数用于增加角度范围。当控制器连接到通过ng-controller指令来初始化DOM, Angular就会实例化一个使用指定的控制器的构造函数创建新的控制器对象函数 .

控制器是实例构造函数,而不是实例本身,与服务相反,服务是实例。因此,据我所知,控制器不能被注入到运行块中。

如果你需要在启动时配置控制器,那么使用提供商。事实证明,在angular中,控制器(以及指令、过滤器和动画)都只是提供程序的语法糖。提供程序可以使用配置块进行配置:配置块文档

配置块 -在提供商注册期间执行构型阶段。只有提供程序和常量可以被注入到配置块中。这是为了防止意外实例化

相关文章:
  • 没有找到相关文章