Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Inheritance 如何覆盖子视图中的标记名、id、类名、el和事件?_Inheritance_Backbone.js_Backbone Views_Backbone Events - Fatal编程技术网

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
  });
}

我认为这是一个重复的问题,一旦你继承了事件,你可以覆盖属性,它就会工作。