0

我有这个被许多视图使用的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 的事件?

4

1 回答 1

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

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

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

于 2013-11-12T09:01:35.900 回答