Часто говорят, что циклические зависимости проблема дизайна и это правда, но иногда это просто проще иметь дело с ним. Однако в некоторых случаях у вас есть один специально, если вы не контролируете его.
У меня когда-то была циклическая зависимость: это было из-за конфигурации перехватчика $ http, которая перенаправляется на страницу входа, используя $ state of ui-router. И u-router имеет зависимость от $ http.
Так что, если вы уверены, что вы делаете есть пара пути
1- В MYSERVICE конструктора, вызовите myFactory.setMyService (это).
2- Выполняем функцию getter в myService, которая будет искать поле myFactoryif, которое оно инициализировано. Если не вызывать $ injector.get ("myFactory");
3- Для каждой функции, которые требуют циклического dependcy: использовать внутреннюю функцию, определенную следующим образом:
this.toto = function(params){$injector.invoke(this.totoInternal, this, {params:params}};
this.totoInternal = ['params', 'myFactory' function(params, myFactory){...}]
4- В функции module.run создания экземпляра службы как (без их dependcies) и установить для каждого из их поле:
module.run(myService, myFactory){
myService.setMyFactory(myFactory);
myFactory.setMyService(myService);
}
Пункт 1 & 2 должно быть сделано только в одном из них. Точка 3 должна использоваться как в/ . Пункт 4 устанавливает зависимости, прежде чем вам понадобится фактическое обслуживание (надеясь, что они вам не понадобятся в модуле.run, который будет работать раньше.
EDIT: о стороннем сервисе, который используется в качестве посредника в принятом ответе -> я предпочитаю использовать $ инжектор в качестве посредника. Это справедливо.
Как я помню, циклические зависимости не разрешены в angularjs 1, это вызывает ошибку. Некоторое время назад у меня такая же проблема, и я разрешил ее, разделив мои сервисы на несколько более мелких частей. –
Существует [хороший вопрос] (http://stackoverflow.com/questions/19344214/problems-with-circular-dependency -and-oop-in-angularjs) по этой теме, – troig
Вы пробовали создать третий сервис/завод? Это интересное прочтение круговых описаний http://misko.hevery.com/2008/08/01/circular-dependency-in-constructors-and-dependency-injection/ –