Улучшить эту документацию Посмотреть исходный код 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.
Это довольно редкий случай, но может возникнуть, если сторонняя библиотека выполняет инъекцию разметки.
В следующем примере новый блок HTML, содержащий директиву ng-controller , добавляется в конец тела документа с помощью JQuery. Затем мы компилируем и связываем его со текущим контекстом 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.3.20/docs/api/ng/function/angular.injector