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

tagNameidclassName、およびelプロパティについては、新しい値を設定することで簡単にオーバーライドできます。events
については、単に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 に答える