我已经使用了backbonejs近2年了,我刚刚开始使用this website上的第一个应用程序来开发marionettejs。
我的问题的原因是,在我的应用程序中,我有一个带有2个复合视图的布局,呈现为下拉列表和表格(每当我们更改下拉列表中的选项时,它都会自动更新)。
我所做的是我的下拉列表中的“更改”事件,我有一个MyApp.vent.trigger()我在MyApp.addInitializer()函数中有一个监听器来更新其他复合视图(下表)下拉列表)。实际上对于整个应用程序,我在itemViews中有近6个触发器,而且复合视图和监听器都在addInitializer()内部用于其他一些函数。
我只是想知道我是否做得对吗?或者这是marionettejs通常的开发方式吗?
谢谢
答案 0 :(得分:0)
是的,这是推荐的想法。但是,您不一定需要使用顶级vent
属性:每个子应用和视图都有自己的(作用域)事件管理器。此外,您不一定需要在addInitializer
中添加侦听器。
以下是一个示例(来自我的Marionette book):
在视图范围内触发事件:https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_view.js#L15这使用triggers
哈希值,但您也可以在视图中执行this.trigger("my:event")
,例如:{{3 }}
聆听事件(并在必要时重新触发事件):https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_view.js#L29和https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_controller.js#L48
希望这有帮助!