我已被抛入Backbone代码库,我需要进行的修改之一需要使用typeahead复制文本元素。我不想复制和粘贴代码,而是想重新使用事件代码,但我几乎不了解Backbone,我不知道应该怎么做。它应该是帮助者吗?如果是这样,我在哪里放置帮助程序代码,以便两个视图都可以使用它?如果可能的话,我宁愿不尝试查看继承,因为我希望尽可能简单和最小化。
events: {
// all other events removed for conciseness.
'typeahead:selected #ud_producerid': 'producerChanged'
}
我需要在producerChanged函数中具有相同功能的相同事件以及将typeahead连接起来以在2个不同视图中工作的setupBindings代码。
答案 0 :(得分:0)
我知道你说你不想在这里使用继承,但在Backbone中很容易并且非常适合这项任务。
var TypeaheadBase = Backbone.View.extend({
events: {
'typeahead:selected #ud_producerid': 'producerChanged'
},
producerChanged: function(e) {
...
},
anotherBaseMethod: function() {
...
}
});
var TypeaheadBaseA = TypeaheadBase.extend({
someOtherAMethod: function() {
...
},
// You can do some extra functionality on `producerChanged`.
// (Or you can override by not calling the Base prototype).
producerChanged: function() {
TypeaheadBase.prototype.producerChanged.apply(this, arguments);
// Do some additional stuff.
}
});
var TypeaheadBaseB = TypeaheadBase.extend({
// You can also extend things like events, which could be a hash (Object).
events: function() {
var parentEvents = _.result(TypeaheadBase.prototype, 'events');
return _.extend({}, parentEvents, {
'click a': 'someClickEvent'
});
},
someClickEvent: function() {
...
}
});