1

我正在尝试为我的模型创建一个自定义事件,但显然自定义事件无论如何都会被触发,除非我使用“匿名”函数定义作为回调

这是我的应用程序结构的伪代码

//Router
initialize: ->
  this.user = new User()
  this.view = new View({model:this.user})
  this.view.render()

//View
initialize: ->
  //This event binding get triggered no matter what
  //this.model.on("custom:event", this.triggerMe(), this) 

  //This works properly. Only triggered when I call model.trigger("custom:event")
  this.model.on("custom:event", function(){console.log("I WORK!!");}))

triggerMe: ->
  //I GET TRIGGER NO MATTER WHAT
4

2 回答 2

4

你在这里调用一个函数:

this.triggerMe()

应该是this.triggerMe

this.model.on("custom:event", this.triggerMe, this)

添加 () 或 .call() 或 .apply() 是调用一个函数而不是对其的引用。

于 2012-09-26T02:38:13.017 回答
1

通过传递,this.triggerMe()您将自动执行该triggerMe函数(因为您添加了括号,并且通过调用它)。

您需要做的是传递对该函数的引用。像这样:

this.model.on("custom:event", this.triggerMe, this)
于 2012-09-26T02:38:23.133 回答