javascript - 将带有参数的方法绑定(bind)到主干模型更改事件

标签 javascript backbone.js

我认为这个问题与其说是主干问题,不如说是一个 javascript 问题,但我在主干中开发应用程序时遇到过它,所以这就是我要问的上下文。

我正在将带有参数的方法绑定(bind)到模型的更改事件。下面的代码在绑定(bind)监听器时执行该方法,而不是在触发事件时执行该方法:

this.model.on("change:disposition", this.dChange("disposition"), this);

下面的代码在更改事件被触发时执行该方法(所需的行为):

this.model.on("change:disposition", function(){ this.dChange("disposition"); }, this);

如果有人能描述这两个实例中具体发生了什么,我将不胜感激。此外,是否有更好的方法来绑定(bind)带有参数的方法,而不是像我所做的那样将其包装在闭包中?

谢谢。

最佳答案

当您调用 this.dChange("disposition") 时,您正在调用该函数。 (您正在使用括号 () 来调用)

但是当您执行 function() {}this.dChange 时,您实际上是在引用一个函数对象。一旦事件被触发,事件管理器就会调用这个引用。

旁注:在您的情况下,您可以使用 bind 而不是使用匿名函数Underscore.js 的方法是这样的:

this.model.on("change:disposition", _.bind(this.dChange, this, "disposition"));

关于javascript - 将带有参数的方法绑定(bind)到主干模型更改事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14013761/

相关文章:

database - Backbone JS 保存/删除到服务器保留与模型关联的主键?

django - 使用主干/ Ember 使 Django 成为一个简单的 REST API?

javascript - 如果不在浏览器 View 中,则停止播放视频但不重新启动

javascript - 在 AngularJS 中保存创建的数据

无法定义javascript对象属性

javascript - 使用 window xp 主题(非经典)时垂直滚动条不起作用

javascript - 多选下拉列表 - 在 optgroup 选项之外未添加到字段中

javascript - 如何在 Backbone 模型中设置属性

javascript - 如何处理从backbone.js中的collection.create()触发的多个无效事件

javascript - jQuery 数据 $(...).data ('foo' ) 有时会在 Backbone 应用程序中返回 undefined