我正在尝试为我的模型创建一个自定义事件,但显然自定义事件无论如何都被触发,除非我使用“匿名”函数定义作为回调
以下是我的应用结构的伪代码
//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
答案 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)