绑定方法与骨干模型更改事件的参数

时间:2012-12-23 18:56:00

标签: javascript backbone.js

我认为这个问题更像是一个javascript问题,而不是一个骨干问题,但是我在骨干中开发一个应用程序时遇到过这个问题,所以这就是我要问的上下文。

我正在使用模型的change事件的参数绑定一个方法。下面的代码在绑定侦听器时执行该方法,而不是在触发事件时执行:

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

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

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

如果有人可以描述这两个实例中发生的具体情况,我将不胜感激。另外,是否有更好的方法将方法与参数绑定,而不是像我一样将它包装在闭包中?

感谢。

1 个答案:

答案 0 :(得分:3)

当您致电this.dChange("disposition")时,您正在调用该功能。 (您正在使用括号()来调用)

但是当你执行function() {}this.dChange时,你实际上是在引用一个函数对象。事件管理器将在事件触发后调用此引用。

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

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