我认为这个问题与其说是主干问题,不如说是一个 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/