javascript - 主干 View : Inherit and extend events from parent

标签 javascript backbone.js backbone-events

Backbone 的文档指出:

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.

如何继承父 View 事件并扩展它们?

父 View

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

subview

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

最佳答案

一种方法是:

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

另一个是:

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

检查事件是函数还是对象

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

关于javascript - 主干 View : Inherit and extend events from parent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9403675/

相关文章:

javascript - 如何使用文本文件中的 d3.js 绘制直方图,而不是使用 map 随机生成

javascript - 顺利打开div

javascript - 将两个 Backbone 集合扩展到另一个 Backbone 集合

javascript - 带主干的 HAML

javascript - 使用 Backbone 事件来切换 Collection View 属性或 jQuery.siblings()?

svg - 应用于作为 svg 元素的 el 的主干事件

javascript - 如何使用jquery访问 Canvas ?

javascript - 从 html 源代码中删除 vbscript 或停用 vbscript

backbone.js - 带有 RequireJS 的 Backbone 多页应用程序中的单例模型

javascript - 从另一个js函数触发Backbone事件