Backbone View: Inherit and extend events from parent

前端 未结 15 795
醉梦人生
醉梦人生 2020-11-30 16:50

Backbone\'s documentation states:

The events property may also be defined as a function that returns an events hash, to make it easier to programmatic

15条回答
  •  一个人的身影
    2020-11-30 17:21

    One way is:

    var ChildView = ParentView.extend({
       events: function(){
          return _.extend({},ParentView.prototype.events,{
              'click' : 'onclickChild'
          });
       }
    });
    

    Another would be:

    var ParentView = Backbone.View.extend({
       originalEvents: {
          'click': 'onclick'
       },
       //Override this event hash in
       //a child view
       additionalEvents: {
       },
       events : function() {
          return _.extend({},this.originalEvents,this.additionalEvents);
       }
    });
    
    var ChildView = ParentView.extend({
       additionalEvents: {
          'click' : ' onclickChild'
       }
    });
    

    To check whether Events is function or object

    var ChildView = ParentView.extend({
       events: function(){
          var parentEvents = ParentView.prototype.events;
          if(_.isFunction(parentEvents)){
              parentEvents = parentEvents();
          }
          return _.extend({},parentEvents,{
              'click' : 'onclickChild'
          });
       }
    });
    

提交回复
热议问题