backbone.js 视图继承。父级中的“this”分辨率

2023-12-20

我有一个使用视图继承的案例,我的代码基本上如下所示:

parentView = Backbone.View.extend({
    events: {
        "some event": "business"
    },
    initialize: function(){
        _.bindAll(this);
    },
    business: function(e){
        ...
        this.someFunc && this.someFunc();
        ...
     }
});

childView = parentView.extend({
    events: {
        ...
    },
    constructor: function(){
       this.events = _.extend( {}, parentView.prototype.events, this.events );
       parentView.prototype.initialize.apply( this );
    },
    initialize: function(){
       _.bindAll(this);
    },
    someFunc: function(){
       ...
    }
});

更新:已移动this.events扩展到构造函数。

我的孩子视图有someFunc在其中,以及在父视图中的某些业务函数期间,它应该调用该函数(如果存在)。如果this正确设置为childView,然后this.someFunc应该存在。然而,这不是我所经历的行为。

在此期间initialize函数(在父级中),this确实设置为子视图。然而,当some event火灾、business函数被调用this set to parentView.


你有没有尝试过延长this.events在构造函数中,而不是在初始化函数中?如果你在初始化时这样做,那就太晚了;活动代表团business函数已经在构造函数中设置,并且将指向parentView(请参阅调用this.delegateEvents();在 Backbone.View 的构造函数中)。

更新了一个工作示例:

ParentView = Backbone.View.extend({
    name: 'ParentView',
    events: {
        "event": "business"
    },
    business: function(e){
        this.someFunc && this.someFunc();
    }
});

ChildView = ParentView.extend({
    name: 'ChildView',
    events: {
    },
    constructor: function(){
       this.events = _.extend( {}, ParentView.prototype.events, this.events );
       console.debug( this.events );
       ParentView.prototype.constructor.apply( this, arguments );
    },
    someFunc: function(){
        console.debug('someFunc; this.name=%s', this.name);
    }
});

child = new ChildView();
$( child.el ).trigger('event');
// logs 'this' in 'someFunc'; the name is 'ChildView'.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

backbone.js 视图继承。父级中的“this”分辨率 的相关文章

随机推荐

  • 如何从日期/时间字段快速选择不同的日期,SQL Server

    我想知道是否有一个性能良好的查询来从 SQL Server 中带有日期时间字段的表中选择不同的日期 忽略时间 我的问题不是让服务器实际执行此操作 我已经看到这个问题 https stackoverflow com questions 887
  • ElasticSearch NEST 搜索

    当我尝试对 ElasticSearch 实例执行搜索时遇到意外错误 我正在关注这里的文档 http nest azurewebsites net nest quick start html http nest azurewebsites n
  • 如何在单击时展开文本区域

    我正在开发一个有文本区域的小项目 我需要帮助来使文本区域在鼠标单击时展开 就像 Twitter 和 Facebook 那样 文本区域首先应该看起来像一个文本字段 然后单击时应该展开 这可以在不使用 JavaScript jQuery 的情况
  • R中的时间序列

    我正在电子表格中跟踪我的体重 但我想通过使用 R 来改善体验 我试图在 R 中找到一些有关时间序列分析的信息 但没有成功 我这里的数据采用以下格式 date gt weight gt body fat percentage gt water
  • Angular 5 ngx-bootstrap 表单验证

    我正在读阿里 勒纳的书ng book在 Angular 5 上 我正在使用ngx bootstrap and Bootstrap 4 表单验证似乎并不像勒纳先生实现的那样工作 我不确定这是否是一个限制ngx bootstrap 有人知道吗
  • 显示数组内容的问题

    下面的代码将内容和图像保存到 varcontent i content and vacontent i images 然而 我在正确显示内容和图像的循环之外唯一得到的是 varcontent i content Print r 显示数组的所
  • ValueError:需要解压的值太多(预期为 2)

    在我正在使用的Python教程书中 我输入了一个示例同时分配 当我运行程序时 我得到了前面提到的 ValueError 但不明白为什么 这是代码 avg2 py A simple program to average two exam sc
  • 当应用程序未运行时,GCM 推送通知不会在某些设备中显示

    我在我的应用程序中实现了 GCM 推送通知 并且已成功完成 但在某些设备中 当应用程序关闭时 它不会显示通知 未显示通知的设备列表 Redmi 2 lenovo Gionee 谁能解释一下问题是什么以及我如何解决它 这是我的清单
  • 如何在 Android Management API 中为 Web 应用程序启用 kiosk 模式

    我们的一位客户希望通过网络应用程序启用单一信息亭模式 当我们应用此配置时 它不起作用 网络应用程序不会显示 并且设备无法使用 即使安装了 Chrome 应用程序 当信息亭模式被禁用时 网络应用程序完全可用 所以我猜 AMAPI 方面有问题
  • Numpy:将每一行除以一个向量元素

    假设我有一个 numpy 数组 data np array 1 1 1 2 2 2 3 3 3 我有一个相应的 向量 vector np array 1 2 3 我该如何操作data沿着每一行进行减法或除法 结果是 sub result 0
  • Android;强制 AppWidget 从 SD 卡工作?

    即使应用程序移至 SD 卡且 SD 卡未移动 是否有任何方法可以强制 AppWidget 工作 unmounted Docs http developer android com guide topics data install loca
  • 意外结果,Gnu C 中的三元运算符

    所以三元运算符的运算符优先级为C对我来说真的很奇怪 例证 include
  • 是否有黄屏死机的实现?

    在 ASP NET 中 当您处于DEBUG模式 如果出现故障 您会看到著名的黄屏死机 这表明有一个Server Error in
  • 分配时 Python 字典键错误 - 如何解决这个问题?

    我有一本这样创建的字典 myDict 然后我想在其中添加对应于另一个字典的键 在其中放置另一个值 myDict 2000 hello 50 所以当我经过myDict 2000 hello 某处 它会给50 为什么 Python 不直接创建这
  • 如何通过 API 获取 Google Sheets 中的单元格编辑日期?

    我已经自动更新了包含 1500 多行的 Google 表格 我需要在 A 列单元格更改时用日期填充新列 我试图从中获取数据谷歌云端硬盘修订 https developers google com drive api v3 reference
  • 当不能简单地重载时混合可选参数和参数

    如同这个问题 https stackoverflow com questions 3948971 c sharp 4 0 optional parameters and params do not work together 我想将可选参数
  • 将 Flask 表单数据转换为 JSON 只获取第一个值

    我想从 HTML 表单获取输入并以 JSON 格式提供输出 当选择多个值时 它们不会转换为 JSON 数组 仅使用第一个值 app route form def show form return render template form h
  • 将技术指标添加到图表中。Posn

    由于某种原因 我无法将 ROC 信号添加到吸墨图上 在文档中应该允许它 我想用这个指标创建一个新的图表 有人可以帮忙吗 plot performance for symbol chart Posn strategy AbsMom Symbo
  • 如何在 Javascript 中将二进制数据读取到字节数组?

    我想读取通过 XMLHttpRequest 获取的 JavaScript 二进制文件 并能够操作该数据 通过我的研究 我发现了这种将二进制文件数据读入数组的方法 var xhr new XMLHttpRequest xhr open GET
  • backbone.js 视图继承。父级中的“this”分辨率

    我有一个使用视图继承的案例 我的代码基本上如下所示 parentView Backbone View extend events some event business initialize function bindAll this bu