【问题标题】:Dependency on service/factory with same name from different module依赖来自不同模块的同名服务/工厂
【发布时间】: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


【解决方案1】:

老问题,但我用decorators解决了它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-02
    • 2015-07-21
    • 1970-01-01
    • 1970-01-01
    • 2019-04-22
    • 2020-11-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多