【问题标题】:bind method with arguments to backbone model change event将参数绑定到主干模型更改事件的方法
【发布时间】:2012-12-10 10:16:29
【问题描述】:

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

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

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

而以下代码在更改事件被触发时执行该方法(期望的行为):

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

如果有人能描述这两种情况下具体发生了什么,我将不胜感激。另外,有没有更好的方法来绑定带有参数的方法,而不是像我所做的那样将其包装在闭包中?

谢谢。

【问题讨论】:

    标签: javascript backbone.js


    【解决方案1】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多