Улучшить эту документацию Посмотреть исходный код angular.injector
- функция в модуле ng
Создаёт объект инжектора, который можно использовать для получения сервисов и для внедрения зависимостей (см. внедрение зависимостей).
Использование
angular.injector(modules, [strictDi]);
Аргументы
| Параметр | Тип | Подробности |
|---|---|---|
| modules | Array.<string|Function> | Список функций модуля или их псевдонимов. См. |
| strictDi (необязательно) | boolean | Указывает, должен ли инжектор работать в строгом режиме, который запрещает выведение аннотаций имён аргументов. (по умолчанию: false) |
Возвращаемое значение
injector |
Объект инжектора. См. $injector. |
Типичное использование
// create an injector
var $injector = angular.injector(['ng']);
// use the injector to kick off your application
// use the type inference to auto inject arguments, or use implicit injection
$injector.invoke(function($rootScope, $compile, $document) {
$compile($document)($rootScope);
$rootScope.$digest();
});
Иногда нужно получить доступ к инжектору текущего работающего приложения Angular извне Angular. Возможно, требуется инжектировать и скомпилировать разметку после загрузки приложения. Это можно сделать с помощью дополнительного injector() для элементов JQuery/jqLite. См. angular.element.
Это довольно редкий случай, но может возникнуть, если сторонняя библиотека инжектирует разметку.
В следующем примере с помощью JQuery добавляется новый блок HTML, содержащий директиву ng-controller, в конец тела документа. Затем мы компилируем и связываем его в текущем контексте AngularJS.
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);
});
© 2010–2017 Google, Inc.
Licensed under the Creative Commons Attribution License 4.0.
https://code.angularjs.org/1.5.11/docs/api/ng/function/angular.injector