Использование углового сервиса внутри друг друга

0

Знаете ли вы, можно ли использовать угловые службы внутри друг друга? Я попробовал, но получил ошибку "Обнаружена круговая зависимость". Например, у меня есть две службы A и B. Могу ли я использовать службу A внутри службы B и службу B внутри службы A?

Теги:

1 ответ

0
Лучший ответ

Нет, вы не можете сделать это с помощью базового ингалятора зависимости angularjs, но вы можете получить любую услугу с помощью $ injector

https://docs.angularjs.org/api/auto/service/$injector

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

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

Предположим, у вас есть 2 службы

Foo Depends on Bar
Bar depends on Foo

Угловая будет идти так, как это

Foo → Зависит от бара, поэтому Load Bar → Instantiate Bar, но его зависит от Foo, поэтому создайте Foo → Instantiate Foo, но это зависит от бара, но подождите! Бар все еще не создан, потому что он ждет Foo, поэтому его циклический.

Вы должны иметь сервис

Foo with no dependency
Bar with no dependency

и третий завод

FooBar which will handle functions which needs the circular dependency.
  • 0
    Спасибо, постараюсь провести рефакторинг моей клиентской части :)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню