在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)。 –