Backbone:mixin事件从扩展视图扩展

时间:2013-11-12 08:53:55

标签: javascript backbone.js view mixins

我有很多观点使用的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的事件扩展到我只需要为此视图所需的事件?

1 个答案:

答案 0 :(得分:0)

var more_events = {
        events: {
          "click .remove" : "remove",
          "click .add" : "add"
        }
    },

_.extend(SpecialRowEditView.prototype, _.merge(EditTableRowMixin, more_events));

你的事件被mixin覆盖了。你需要将它们合并在一起。 在这里,我使用lodash代替下划线。