在Marionette中,我們有一個我們想要擴展的「主視圖」。如何在Backbone/Marionette中「深度擴展」或「模塊化擴展」課程?
var MotorcycleColorChooserDropdown = PaginatedDropdown.extend({
events: {
'mouseenter': function() { return 'vroom'; };
}
});
:
var PaginatedDropdown = Marionette.CompositeView.extend({
template: template,
events: {
'click': function() { return 'hello';},
'keyup': function() { return 'goodbye'}
},
childViewOptions: {
tagName: 'li'
}
});
理想的用例將通過將實現的大多數功能,並修改主類/視圖的一些特徵,更具體的視圖來延伸該視圖中,或類,
問題是我們不確定如何有選擇地修改事件,如事件散列,或覆蓋某些兒童視圖選項。具體做法是:
如果
MotorcycleColorChooserDropdown
有events
對象時,它會覆蓋所有的PaginatedDropdown
被監聽的事件。我們如何混搭? (允許有一個事件的MotorcycleColorChooserDropdown
對象,結合自身與PaginatedDropdown
的事件對象潛在無法解決:如果我們希望
PaginatedDropdown
click
事件的所有功能,但我們也想給它添加一點點在MotorcycleColorChooserDropdown
?難道我們就必須手動堅持一切從父功能分爲兒童類?
我們已經考慮在一個時間根本就沒有做這樣的推廣意見,或做這樣的事情MotorcycleColorChooserDropdown = PaginatedDropdown.extend();
,然後一個做MotorcycleColorChooserDropdown.events = PaginatedDropdown.events.extend({...});
但這似乎是凌亂,醜陋,我敢肯定那裏這是更好的方法。
我解釋這一切在大約一個答案[如何創造一個良好的基類(http://stackoverflow.com/a/40982556/1218980)。 –