Backbonejs和自定义模型事件

时间:2012-09-26 02:27:49

标签: backbone.js

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

以下是我的应用结构的伪代码

//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

2 个答案:

答案 0 :(得分:4)

你在这里调用一个函数:

this.triggerMe()

应该是this.triggerMe

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

添加()或.call()或.apply()调用的函数不是对它的引用。

答案 1 :(得分:1)

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

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

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