Самый простой способ - использовать экземпляр Backbone.View
. Backbone.View
смешивается с Backbone.Events
, что дает вам возможность использовать его в качестве агрегатора событий.
Пример для случая:
childView = Backbone.View.extend({
render: function() {
},
events: {
'click .abc' : 'fireEvent'
},
fireEvent: function (e) {
this.trigger('child:event:fired', e);
}
});
И в родительском зрения:
parentView = Backbone.View.extend({
render: function() {
this.childView = new childView();
this.childView.on('child:event:fired', this.onChildEvent, this);
childView .render();
},
onChildEvent: function (e) {
console.log("child view event");
},
closeThisView: function() {
this.childView.off('child:event:fired', this.onChildEvent, this);
}
})
Таким образом, вы можете подписаться на события childView, но вам нужно вручную управлять развязывание от всех подписок.
Другое решение по той же проблеме можно найти, объявив глобальный агрегатор событий для обоих представлений.
var vent = _.extend({}, Backbone.Events);
И в ваших взглядах просто вызвать необходимые события с vent.trigger
и подписаться/отписаться с vent.(on/off)
методами.