Do ItemView triggers bubble up?

只谈情不闲聊 提交于 2019-12-01 15:13:38

问题


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


回答1:


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



来源:https://stackoverflow.com/questions/16740793/do-itemview-triggers-bubble-up

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!