Inheritance 如何覆盖子视图中的标记名、id、类名、el和事件?
假设我有以下主干结构:Inheritance 如何覆盖子视图中的标记名、id、类名、el和事件?,inheritance,backbone.js,backbone-views,backbone-events,Inheritance,Backbone.js,Backbone Views,Backbone Events,假设我有以下主干结构: var BrowserView = Backbone.View.extend({ el: 'body', events: { click : "onClickEvent" }, initialize: function () { this.collections = []; } }); var FileBrowserView = BrowserView.extend({ el: '#file', cl
var BrowserView = Backbone.View.extend({
el: 'body',
events: {
click : "onClickEvent"
},
initialize: function () {
this.collections = [];
}
});
var FileBrowserView = BrowserView.extend({
el: '#file',
className: 'file-class',
events: {
click: "onFileClick",
mouseover: "onMouseOver"
},
initialize: function () {
this.constructor.__super__.initialize.apply(this);
}
});
我需要覆盖子视图中的标记名、id、类名、el属性,并将子视图中的事件对象与父视图相结合。
如何才能做到这一点?对于标记名、id、类名和el属性,您可以简单地通过设置新值来覆盖它们。对于事件,可以使用与初始化方法相同的技巧,因为事件键可以是函数
events: function(){
return _.extend({}, this.constructor.__super__.events, {
// list of events
});
}
请注意,这不适用于多个继承级别,因此,确切的公式为:
events: function(){
return _.extend({}, _.result(this.constructor.__super__, 'events'), {
// list of events
});
}
我认为这是一个重复的问题,一旦你继承了事件,你可以覆盖属性,它就会工作。