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 a CompositeView
or CollectionView
, that trigger will have itemview
prepended in the name, so:
click:td
would be listen in the CompositeView
as itemview:click:td
That string can be changed like this:
var CV = Marionette.CollectionView.extend({
itemViewEventPrefix: "some:prefix"
});
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 to childview
More info here:
Marionette docs
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With