我有一个表的CompositeView。我在子行ItemView中为每一行设置了触发器...
var TableRow = Marionette.ItemView.extend({
tagName: "tr",
template: _.template($(TableTemplates).filter('#tableRow').html()),
triggers: {
"click td": "click:td"
}
});
触发器是否应该冒泡到父CompositeView?
来自the docs ...
有权访问这些[触发事件的视图的视图,模型和集合属性],可以更灵活地处理来自多个视图的事件。例如,选项卡控件或展开/折叠小部件(例如面板栏)可以从许多不同的视图触发相同的事件,并使用单个函数进行处理。
“单个函数”不会在父CompositeView中,以便它可以对来自其任何子ItemView的触发器做出反应吗? CompositeView如何监听ItemView触发器?
由于
答案 0 :(得分:14)
是的,他们起泡了。
唯一要记住的是,当从ItemView
或CompositeView
调用CollectionView
时,该触发器会在名称前面添加itemview
,因此:
click:td
会在CompositeView
中收听itemview:click:td
该字符串可以像这样更改:
var CV = Marionette.CollectionView.extend({
itemViewEventPrefix: "some:prefix"
});
所以你的触发器是some:prefix:click:td
编辑:在较新的版本上(不确定起始版本),前缀itemview
已更改为childview
更多信息: