【发布时间】:2013-03-10 13:53:14
【问题描述】:
我是 Angular 新手,遇到了一个 catch-22:
事实:
我有一项服务可以记录我的资料 (my-logger)。
我已经用我自己的实现替换了(角度的)$ExceptionHandler,它将未捕获的异常转发到 my-logger 服务
我有另一个服务 pusher-service,每当要使用“my-logger”在我的应用程序某处记录致命消息时都需要通知该服务。
问题:
我不能让 'my-logger' 依赖于 'pusher',因为它会创建循环依赖(因为 'pusher' 使用 $http。圆圈:$ExceptionHandler -> my-logger -> pusher -> $ http -> $ExceptionHandler...)
我的尝试:
为了使这两个服务相互通信,我想在 pusher-service 上使用 $watch:监视 $rootscope 上的一个属性,该属性将在 my-logger 中更新。 但是,当尝试在“my-logger”中使用 $rootScope 时,为了更新“推送器”“监视”的属性,我在循环依赖方面失败了,因为事实证明 $rootscope 依赖于 $ExceptionHandler(圆圈: $ExceptionHandler -> my-logger -> $rootScope -> $ExceptionHandler)。
试图找到一个选项来在运行时获取在其上下文“my-logger”服务中工作的范围对象。找不到这样的选项。
也不能使用广播,因为它需要 my-logger 才能访问范围 ($rootScope),而如上所示,这是不可能的。
我的问题:
是否有一种角度方式让两个服务通过第 3 方实体进行通信?
知道如何解决这个问题吗?
【问题讨论】:
标签: angularjs