0

DOM イベントを定義する Backbone.View から継承したクラスを作成しました。

var MyView = Backbone.View.extend({
  el: '#myview',
  events: {
    'click .somebutton': 'somefunction',
    'click .otherbutton': 'otherfunction'
  },
  somefunction: function(){ console.log('somefunction!'); },
  otherfunction: function(){ console.log('otherfunction!');  }
});

このビュー ( new MyView();) をインスタンス化すると、すべてが正常に機能しているように見え、要素がクリックされるたびにコールバックが起動されます。

ただし、次のようにビューをインスタンス化すると:

new MyView({
  events: {
    'click .thirdbutton': function(){ 
       console.log('thirdfunction'); 
    }
  }
});

私の既存のクラスイベントはすべて、この単一のイベントによってオーバーライドされます。インスタンスのみのイベントを既存のクラス イベントとマージする正しい方法は何ですか? 私の例では、3 つのイベントすべてをインスタンスでアクティブにしたいと考えています。

4

2 に答える 2

1

initialize-メソッドでそれを行うことができます

initialize: function() {
  _.extend(this.events, {
    'click .thirdbutton': function() {...}
  });
}

これは最も美しい答えではないかもしれませんが、うまくいくはずです。

于 2013-09-27T11:02:46.543 に答える