Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Do ItemView triggers bubble up?

Tags:

marionette

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

like image 329
user2418171 Avatar asked May 24 '13 17:05

user2418171


1 Answers

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

like image 108
Jesus Rodriguez Avatar answered Oct 15 '22 16:10

Jesus Rodriguez