如何处理这种循环依赖?

How to handle this cycle dependency?

我有这样的设计:

  1. UI层
  2. 组件层。

想法是所有事件处理程序,如点击,绘制 dom 将击中 UI 层,该层将调用相应的组件层。

现在假设点击一个按钮,ui 层调用组件层,所以依赖关系如下所示:

define(['creationComponent']) //ui layer module

以便在单击按钮时,该模块可以调用 creationComponent 方法。

现在creationComponent也是,为了画东西,调用ui层,所以creationComponent看起来像这样:

define(['uiLayer']) //create module

这里我使用依赖循环,我在设计过程中哪里出错了?

我认为 UI 层不应该在某些事件发生时真正 调用 组件层。它应该发送一个事件。你可以在这里使用观察者模式。它发送事件后,它应该不关心它是否被处理。

当组件需要绘制自己时,我想这里应该发生一个实际的调用,因为这个动作不能被遗忘并且它的处理不能被跳过。