Marionetteには、私たちが拡張したい「マスタービュー」があります。Backbone/Marionetteのクラスを「深く拡張する」または「モジュール的に拡張する」方法はありますか?
var PaginatedDropdown = Marionette.CompositeView.extend({
template: template,
events: {
'click': function() { return 'hello';},
'keyup': function() { return 'goodbye'}
},
childViewOptions: {
tagName: 'li'
}
});
理想的なユースケースは、マスタークラス/ビューの、ほとんどの機能を実装し、機能の一部を修正するだろう、より具体的な景色に、このビュー、またはクラスを拡張することになります。
var MotorcycleColorChooserDropdown = PaginatedDropdown.extend({
events: {
'mouseenter': function() { return 'vroom'; };
}
});
問題は、イベントハッシュなどの選択的な変更方法や、特定の子ビューオプションをオーバーライドする方法がわかりません。具体的に:
MotorcycleColorChooserDropdown
がevents
を目的としている場合、それはPaginatedDropdown
がために待機しているすべてのイベントをオーバーライドします。どのようにミックスして一致させるのですか?我々はPaginatedDropdown
click
イベントのすべての機能をしたい場合はどうすれば、私たちもそれに少しを追加したい:?(潜在的に解決不可能なイベントオブジェクトPaginatedDropdown
のイベントで自身を組み合わせたMotorcycleColorChooserDropdown
にオブジェクトを持つを許可
MotorcycleColorChooserDropdown
に?私たちは手動で子クラスに親からのすべての機能を固執する必要がありますか?
私たちは、単にこのような拡張されたビューをやって、または時間でMotorcycleColorChooserDropdown = PaginatedDropdown.extend();
、その後、1のようなものをやっていないと考えられてきましたMotorcycleColorChooserDropdown.events = PaginatedDropdown.events.extend({...});
していますが、それは厄介な、醜いと思われ、私は確信しているより良い方法です。ここで
私は(http://stackoverflow.com/a/40982556/1218980)[良いベースクラスを作成する方法]についての回答でこのすべてを説明します。 –