Как я могу получить инжектор для моего приложения?

66
3

Я пытаюсь запустить функцию и включить в нее услуги. Я думал, что это можно легко осуществить, используя $injector. Поэтому я попробовал следующий (упрощенный пример):

angular.injector().invoke( [ "$q", function( $q ) { $q.something(); } ] );

Который приводит к Uncaught Error: [$injector:unpr] Unknown provider: $qProvider <- $q.

Я знаю, что могу решить это, используя angular.injector( ["ng"] ), но есть еще несколько зависимостей.

Было бы прекрасно, если бы я мог просто получить экземпляр инжектора, который используется везде в моем приложении.

Документация для angular.injector предполагает, что вы можете получить ее с помощью параметра angular.element(document).injector(), но это приводит к undefined для меня.

спросил(а) 2014-06-23T16:52:00+04:00 6 лет назад
1
Решение
126

Вам не нужно это делать, но вы можете получить инъектор app app с помощью корневого элемента вашего приложения (или любого дочернего элемента).
Например, если вы используете ngApp на теле:

angular.element(document.body).injector();

ответил(а) 2014-06-23T17:19:00+04:00 6 лет назад
55

Ответ ExpertSystem отлично работал для меня

Это отлично работает для меня. Я пытаюсь вызвать функцию из угловой службы вне угловой области в документе "возобновить" событие для использования в моем приложении cordova. Вот код, который я использовал


var injector = angular.element(document.body).injector(); //get the document
injector.invoke(['myService', function (myService) {
myService.doSomething();
}]);

ответил(а) 2016-10-14T18:13:00+03:00 3 года, 8 месяцев назад
39

Попробуй это:

var $injector = angular.injector(['myApp','ng'])

Для $location вам необходимо загрузить приложение на страницу (запустите приложение):

var $injector = angular.bootstrap(document, ['myApp'])

Это вернет инжектор каждый раз, когда вы его вызываете, но не создаст конфликтов, если скрипт уже загружен.

ответил(а) 2014-06-23T17:06:00+04:00 6 лет назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема