我有很多观点使用的mixin
var EditTableRowMixin = {
events: {
"click .save": "save",
"click .abort": "abort"
},
/* common methods for table rows */
};
现在我有了一个新视图,需要比这个mixin更多的事件:
var SpecialRowEditView = Backbone.View.extend({
tagName : "div",
events: {
"click .remove" : "remove",
"click .add" : "add"
},
initialize: function(){
/*Do things */
},
...
...
...
});
_.extend(SpecialRowEditView.prototype, EditTableRowMixin);
return SpecialRowEditView;
我试图将这些事件添加到this.events(这是mixins事件)。它可以工作,但是使用mixin打破了所有其他视图,因为那些因为某些原因现在寻找保存和中止函数。
如何才能将mixin的事件扩展到我只需要为此视图所需的事件?
答案 0 :(得分:0)
var more_events = {
events: {
"click .remove" : "remove",
"click .add" : "add"
}
},
_.extend(SpecialRowEditView.prototype, _.merge(EditTableRowMixin, more_events));
你的事件被mixin覆盖了。你需要将它们合并在一起。 在这里,我使用lodash代替下划线。