在咖啡脚本构造函数中绑定事件

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在咖啡脚本构造函数中绑定事件相关的知识,希望对你有一定的参考价值。

如果我上课了

class Control
  constructor: (@canvas, @control) ->
    @control.on('keyup change', ->
      update(@canvas)
    )

当我改变控制,更改事件被触发,我得到错误$canvas is undefined

但是,如果代码更改为

class Control
  constructor: (canvas, @control) ->
    @control.on('keyup change', ->
      update(canvas)
    )

一切都按预期工作。

这是为什么?

答案

这按预期工作。在构造函数参数上使用@会自动在我们的构造函数中设置this.canvas = canvas。事件处理程序的上下文(this)与类不同,除非您使用“胖箭头”=>明确地将其范围限定。

class Control
  constructor: (@canvas, @control) ->
    @control.on('keyup change', => # notice fat arrow
      update(@canvas)
    )

在您的工作示例中,您通过不将canvas附加到当前上下文来避免此问题。

以上是关于在咖啡脚本构造函数中绑定事件的主要内容,如果未能解决你的问题,请参考以下文章

无法理解react.js中的处理事件[关闭]

调用咖啡脚本定义的函数?

js事件绑定及深入

在咖啡脚本中调用函数定义的方法

在 onclick 属性中使用咖啡脚本创建函数 [重复]

在 Visual Studio 中创建构造函数的代码片段或快捷方式