0

我正在使用 Marionette 和 RequireJS 开展一个项目,并且在某一点上有点困惑,对此我无法找到答案。我从 Marionette wiki 了解到,最好在自己的模块中创建一个全局事件聚合器,并将其列为需要使用它的任何模块的依赖项。

我的问题是需要监听给定模块引发的事件的模块是否也需要列为依赖项。例如,如果 ModuleA 触发了我需要 ModuleB 监听的事件,ModuleA 是否需要将 ModuleB 作为依赖项?这样做似乎是不可取的,因为事件发布者不需要了解各种订阅者,但我意识到使用 AMD 而不是 Marionette 的模块系统可能是一个陷阱。

任何澄清将不胜感激。

4

1 回答 1

0

您可以在 App 中创建主事件聚合。就像是

App.channel = _.extend({}, Bacbone.Events);

所有模块都有App的引用,可以使用这个频道。

在模块A

App.channel.trigger("someEvent", data);

在模块 B

App.channel.on("someEvent", function(data){ ... })
于 2013-10-21T09:38:33.753 回答