Either the parent view emits the event directly, and the parent listens for it:
ChildView = Backbone.Marionette.ItemView.extend({ send_message: function(){ this.trigger('some-message'); } }) ParentCollectionView = Backbone.Marionette.CollectionView.extend({ // ON RENDER onRender: function(){ // no idea how Marionette references its children views // let say this.subview is a reference to your child view this.listenTo(this.subview, 'some-message', this.do_something); } // DO SOMETHING do_something: function(){ alert('did something'); } });
Or use a special event emitter that you enter in the subtitle (s)
ChildView = Backbone.Marionette.ItemView.extend({ send_message: function(){ this.channel.trigger('some-message'); } }) ParentCollectionView = Backbone.Marionette.CollectionView.extend({ initialize: function(){ this.channel = _.extend({}, Backbone.Events); this.listenTo(this.channel, 'some-message', this.do_something); },
source share