写在前面

Angular注入器会负责创建angular组件,解决组件之间的依赖以及依赖注入等职责,config 可以向 angular 组件(控制器、服务、过滤器、指令、动画等)中注入服务(service)或者值(value)类型的依赖。run方法中定义依赖,可被注入的依赖包括服务(service)、值(value)和参量(constant)。

Module

模块是 services, directives, controllers, filters, and configuration 的集合。angular.module 用来配 $injector 的。
下面 api 用来注册服务,

  1. module.value();
  2. module.service();
  3. module.constant();

下面 api 用来注入服务,

  1. module.config();
  2. module.run();

创建好模块之后,使用angular.injector(['ng', 'myModule']) 来创建注入器来启动你的模块,也可以使用 ngApp 或者 angular.bootstrap。

ngInject

ng-annotate 将 ngInject 当成一个标志,如果一个函数以 ngInject 开头,那么 ng-annotate 将下面代码

  1. angular.module("MyMod").controller("MyCtrl", function($scope, $timeout) {
  2. "ngInject";
  3. ...
  4. });

转化为:

  1. angular.module("MyMod").controller("MyCtrl", ["$scope", "$timeout", function($scope, $timeout) {
  2. "ngInject";
  3. ...
  4. }]);