【发布时间】:2014-03-18 03:46:14
【问题描述】:
我正在尝试在一个模块中创建一个服务,该服务依赖于另一个模块中的另一个服务,但这些服务具有相同的名称。考虑以下示例:
angular.module('module1',[]).factory('log', [function () {
return { show: false, msg: "" };
}]);
angular.module('module2', ['module1']).factory('log', ['log', function (log) {
return { show: false, msg: log.msg + "" };
}]);
angular.module('myapp', ['module2']);
当我实现上面的代码得到: 错误:[$injector:cdep] 找到循环依赖:日志
我知道服务在角度 [1] 中是单例的,并且依赖注入遵循最后一个获胜约定 [2]。在我看来,在“module2”中,被注入的“log”本身就是循环依赖。如何从“module1”注入“log”?
【问题讨论】:
-
是否有必要保留两个服务的名称日志?
-
是的,两个服务都需要同名。我想扩展“module1”的功能,而不是更改“myapp”,而不是更新依赖项。我知道拥有不同的服务名称可以防止这个问题,这就是我的应用程序目前的样子。
-
如果无法使用完全限定名称(例如模块名称 + 服务名称)引用服务,我认为这是 angular 的缺点。
标签: angularjs dependency-injection circular-dependency angular-services