代码之家  ›  专栏  ›  技术社区  ›  Paul R

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

  •  -1
  • Paul R  · 技术社区  · 10 年前

    如果我有课

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

    一切都按预期进行。

    这是为什么?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Evan Davis    10 年前

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

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

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