主干查看:继承和扩展从父事件 [英] Backbone View: Inherit and extend events from parent

查看:84
本文介绍了主干查看:继承和扩展从父事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

骨干文档状态:


  

该事件属性也可以定义为返回一个事件的散列函数,以使其更容易编程定义事件,以及来自父视图继承它们。


你如何继承父母的看法事件和扩展它们?

父视图

  VAR ParentView = Backbone.View.extend({
   事件:{
      '点击':'的onclick
   }
});

子视图

  VAR ChildView = ParentView.extend({
   事件:函数(){
      ????
   }
});


解决方案

的一种方法是:

  VAR ChildView = ParentView.extend({
   事件:函数(){
      返回_.extend({},ParentView.prototype.events,{
          '点击':'onclickChild
      });
   }
});

另一个办法是:

  VAR ParentView = Backbone.View.extend({
   originalEvents:{
      '点击':'的onclick
   },
   //覆盖此事件中的散列
   //子视图
   additionalEvents:{
   },
   事件:函数(){
      返回_.extend({},this.originalEvents,this.additionalEvents);
   }
});VAR ChildView = ParentView.extend({
   additionalEvents:{
      '点击':'onclickChild
   }
});

要检查活动是否是函数或对象

  VAR ChildView = ParentView.extend({
   事件:函数(){
      VAR parentEvents = ParentView.prototype.events;
      如果(_。isFunction(parentEvents)){
          parentEvents = parentEvents();
      }
      返回_.extend({},parentEvents,{
          '点击':'onclickChild
      });
   }
});

Backbone's documentation states:

The events property may also be defined as a function that returns an events hash, to make it easier to programmatically define your events, as well as inherit them from parent views.

How do you inherit a parent's view events and extend them?

Parent View

var ParentView = Backbone.View.extend({
   events: {
      'click': 'onclick'
   }
});

Child View

var ChildView = ParentView.extend({
   events: function(){
      ????
   }
});

解决方案

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'
      });
   }
});

这篇关于主干查看:继承和扩展从父事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆