最簡單的方法是使用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)
方法退訂。