I have a CompositeView for a table. I have triggers set in the child ItemView for each row...
var TableRow = Marionette.ItemView.extend({
tagName: "tr",
template: _.template($(TableTemplates).filter('#tableRow').html()),
triggers: {
"click td": "click:td"
}
});
Are the triggers supposed to bubble up to the parent CompositeView?
From the docs...
Having access to these [the view, model, and collection properties of the view that triggered the event] allows more flexibility in handling events from multiple views. For example, a tab control or expand/collapse widget such as a panel bar could trigger the same event from many different views and be handled with a single function.
Wouldn't the "single function" be within the parent CompositeView so that it can react to the triggers from any of its child ItemViews? How does the CompositeView listen for the ItemView trigger?
Thanks
Yes, they bubble up.
The only thing to have in mind is that when an
ItemView
is called from aCompositeView
orCollectionView
, that trigger will haveitemview
prepended in the name, so:click:td
would be listen in theCompositeView
asitemview:click:td
That string can be changed like this:
So your trigger would be
some:prefix:click:td
EDIT: On newer versions (not sure about the starting version), the prefix
itemview
has been changed tochildview
More info here:
Marionette docs