gleber1
@gleber1

Когда лучше использовать injector а когда просто перечислить как аргумент функции?

в каких ситуациях то есть
.controller('someCtrl', function($scope,mainService) {
mainService.method().....
})

и когда
.controller('someCtrl', function($scope) {
var myInjector = angular.injector(['app']);
 var service = myInjector.get('mainService');
service.method()...
})
  • Вопрос задан
  • 175 просмотров
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
так, начнем с того что есть сервис $injector:

function SomeController($injector) {
    var service = $injector.get('mainService');
}

angular.controller('SomeController', ['$injector', SomeController]);


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

В контроллеры же инджектить инджектор не стоит вообще.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
AMar4enko
@AMar4enko
Сергей Протько На последнем ngConf был пример контроллера как ES6 класса, в качестве подготовки к переходу на 2-ю версию. Предлагаете в таком случае в конструкторе все используемые сервисы в this пихать? Я как раз сохраняю injector и из него по ходу достаю все, что нужно.
Ответ написан
miraage
@miraage
Старый прогер
По сути, прямое использование сервиса $injector - это service locatior.
В интернетах немало пишут, мол это анти-паттерн, мол плохо.

Я не вижу никаких причин, чтобы не использовать dependency injection.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы