为什么以及在 Angular 中使用 App.run() 的位置

Pra*_*ury 1 javascript angularjs

所以在大多数情况下,我认为angular.module('', []).run()没有被使用。这是否意味着 Angular 在内部调用它?

如果使用为什么?如果可能的话,请提供一个简单的用例,让我了解该功能的必要性。

Max*_*kyi 5

这是官方文档所说的

模块是在引导过程中应用于应用程序的配置和运行块的集合。在最简单的形式中,该模块由两种块的集合组成:

  • 配置块 - 在提供者注册和配置阶段执行。只有提供者和常量可以注入到配置块中。这是为了防止服务在完全配置之前意外实例化。

  • 运行块 - 在创建注入器后执行并用于启动应用程序。只有实例和常量可以注入到运行块中。这是为了防止在应用程序运行时进行进一步的系统配置。

因此 AngularJS 有两个主要的引导阶段,每个阶段又分为两个子阶段:

  • 配置
  • “跑步”

  • 编译&绑定
  • 第一个消化周期

您可以订阅其中的每一个。要订阅该run阶段,请使用run该模块的方法。此阶段可用于在 AngularJS 解析 DOM 和编译组件之前以及第一个更改检测周期之前执行一些逻辑。

例如,您可以在将服务注入任何组件之前对其进行初始化:

angular.module('mymodule').run(function (MyService) {
    MyService.init();
});
Run Code Online (Sandbox Code Playgroud)

如果您不订阅该run阶段,AngularJS 不会执行任何特殊操作。根本没有触发任何功能。