Backbone 的文档指出:
The events property may also be defined as a function that returns an events hash, to make it easier to programmatically define your events, as well as inherit them from parent views.
如何继承父 View 事件并扩展它们?
父 View
var ParentView = Backbone.View.extend({
events: {
'click': 'onclick'
}
});
subview
var ChildView = ParentView.extend({
events: function(){
????
}
});
最佳答案
一种方法是:
var ChildView = ParentView.extend({
events: function(){
return _.extend({},ParentView.prototype.events,{
'click' : 'onclickChild'
});
}
});
另一个是:
var ParentView = Backbone.View.extend({
originalEvents: {
'click': 'onclick'
},
//Override this event hash in
//a child view
additionalEvents: {
},
events : function() {
return _.extend({},this.originalEvents,this.additionalEvents);
}
});
var ChildView = ParentView.extend({
additionalEvents: {
'click' : ' onclickChild'
}
});
检查事件是函数还是对象
var ChildView = ParentView.extend({
events: function(){
var parentEvents = ParentView.prototype.events;
if(_.isFunction(parentEvents)){
parentEvents = parentEvents();
}
return _.extend({},parentEvents,{
'click' : 'onclickChild'
});
}
});
关于javascript - 主干 View : Inherit and extend events from parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403675/