2012-12-23 113 views
3

我认为这个问题是一个JavaScript问题比骨干问题,但我已经碰到它,而在骨干开发应用程序,所以这是我会问它的上下文。绑定方法与参数骨干模型更改事件

我绑定了一个模型的变化事件参数的方法。下面的代码执行,当收听者结合的方法,而不是当该事件被触发:

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

而下面的代码执行时的变化事件被触发的方法(所希望的行为):

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

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

谢谢。

回答

3

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

但是当你做function() {}this.dChange你实际上是在引用一个函数对象。这是事件经理在事件被解雇后会调用的这个参考。

旁注:在你的情况,而不是使用anonymus功能,你可以使用Underscore.js的bind方法是这样的:

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