0

假设我有以下主干结构:

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

我需要覆盖子视图中的 tagName、id、className、el 属性,并将子视图中的事件对象与父视图结合起来。我怎样才能做到这一点?

4

1 回答 1

1

对于tagNameidclassNameel属性,您可以通过设置新值来简单地覆盖它们。
对于events,您可以使用与initialize方法相同的技巧,因为events键可以是一个函数。

events: function(){
  return _.extend({}, this.constructor.__super__.events, {
    // list of events
  });
}

请注意,这不适用于多个继承级别,因此,确切的公式是:

events: function(){
  return _.extend({}, _.result(this.constructor.__super__, 'events'), {
    // list of events
  });
}
于 2013-04-13T23:16:02.140 回答