我正在与Marionette和RequireJS合作开展一个项目,并且在一点上我有点困惑,因为我无法找到答案。我从Marionette wiki中了解到,最好在自己的模块中创建一个全局事件聚合器,并将其列为需要使用它的任何模块的依赖项。
我的问题是,需要监听给定模块引发的事件的模块是否也需要列为依赖项。例如,如果ModuleA触发了我需要ModuleB监听的事件,那么ModuleA是否需要将ModuleB作为依赖项?这样做似乎是不可取的,因为事件发布者不需要知道各种用户,但我意识到使用AMD而不是Marionette的模块系统可能是一个陷阱。
任何澄清都将非常感激。
答案 0 :(得分:0)
您可以在App中创建主要事件聚合。像
这样的东西App.channel = _.extend({}, Bacbone.Events);
所有模块都可以参考App,并且可以使用此频道。
模块A中的
App.channel.trigger("someEvent", data);
在moduleB中
App.channel.on("someEvent", function(data){ ... })