【问题标题】:Angular JS object circular dependancyAngularjs对象循环依赖
【发布时间】:2014-09-08 17:15:13
【问题描述】:

我有两个对象,一个 House 和一个 Tenant,它们都是用工厂方法描述和构造的。就应用程序而言,每个租户可能有不止一个房子,每个房子可能有多个租户。因此,每个对象都需要保留另一个对象的数组并能够对另一个对象执行功能。例如,当用户查看他/她的概览时,他可以看到他/她的所有房屋的图标,点击该图标可进入该特定房屋的“房屋页面”。在“房屋页面”中,房屋必须知道谁是租户,以便可以在所有租户之间分配账单并将家务分配给租户。

我的问题是,在创建工厂方法时,我遇到了循环依赖注入,而 Angular JS 似乎不喜欢这样。我似乎想不出解决办法。有什么建议吗?

【问题讨论】:

  • 欢迎来到 Stack Overflow!如果我的回答解决了您的问题,请通过单击问题左侧的接受复选标记将其标记为已接受(这也会为您赢得一些声誉)。如果您需要更多信息/帮助,请告诉我。如果您这样做,请在您的帖子中包含更多详细信息。重现问题的通用代码和类似 jsbin.com 的演示是一篇很棒的帖子。
  • @Blackhole 哎呀,我看到我们的回答类似!我忘了先检查重复项。抱歉!!
  • @m59 没问题,两个答案比一个好:)。如果可以改进,请随时编辑我自己的答案!

标签: angularjs dependency-injection factory-pattern circular-dependency circular-reference


【解决方案1】:

这是一个常见问题,它会通知您需要第三项服务。您应该将共享逻辑分解到第三个服务中,以便它们都需要第三个服务而不是彼此需要。

Angular 的作者 Misko Hevery 写了an article about this problem

总之,他解释说:

两个对象中的一个隐藏了另一个对象 C。任何一个 A 都包含 C 或 B 包含 C。要找出它是哪一个,请列出所有方法 在 A 类使用的 A 类中,以及 B 类中的所有方法 由 A 类使用。两个列表中较短的是您隐藏的 C 类。

【讨论】:

  • 谢谢,在发帖之前我已经阅读了 Misko 的那篇文章。我只是努力将他的 A、B、C 类比应用于我的应用程序。您能举例说明这第三项服务可能是什么吗?
  • @JoãoRitter 正如我在对您的问题的评论中所建议的那样,我举个例子而不是显示您的代码或更通用的示例(首选)对我来说没有任何意义。
猜你喜欢
  • 2014-05-19
  • 1970-01-01
  • 2014-04-28
  • 1970-01-01
  • 1970-01-01
  • 2014-07-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多