2013-11-12 4 views
0

У меня есть этот подмешать, который используется многими видамиМагистральные: подмешать события простирается от расширения вида

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

вы можете попробовать как 'SpecialRowEditView = SpecialRowEditView.extend (EditTableRowMixin)' – rab

ответ

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

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

Ваши события переопределены mixin. вам нужно объединить их вместе. здесь я использую lodash вместо подчеркивания.

Смежные вопросы