angular.injector

创建一个可用于查找服务和依赖注入的注射器对象。(请看开发向导中的依赖注入)

用法

angular.injector(modules, [strictDi])

参数

参数 形式 详细
modules Array.<string/Function> 模块函数或其代称的列表,请看 angular.moduleng 模块必须明确地添加进来。
strictDi(可选) boolean 注射器是否使用严格注入模式,这种模式不允许使用参数名注解自身推断的方式
(默认: false)

返回

injector 注射器对象,详细请看 $injector

例子

典型用法:

// 创建一个注射器
var $injector = angular.injector(['ng']);

// 使用注射器启动你的应用
// 使用类型推断方式自动注入参数,或者使用静默注入
$injector.invoke(function($rootScope, $compile, $document) {
  $compile($document)($rootScope);
  $rootScope.$digest();
});

有时候你希望从外部的 Angular 访问当前运行的 Angular 应用的注射器。或者,你希望在应用启动后注入或者编译一些标记装饰器。 你可以使用在 JQuery/jqLite 元素上拓展的 injector() 方法来实现。请看 angular.element

在下面的例子中,使用了 JQuery 将一个包含了 ng-controller 指令的新的 HTML 块插入了 body 的末尾。 然后我们编译并将其连接到当前的 Angular 作用域。

var $div = $('<div ng-controller="MyCtrl">{{content.label}}</div>');
$(document.body).append($div);

angular.element(document).injector().invoke(function($compile) {
  var scope = angular.element($div).scope();
  $compile($div)(scope);
});