我'm trying to something in canvas respond when clicked. I'已经从一个函数中添加了一个mousedown事件监听器到一个类 Board
addEvents : () ->
@.canvas.addEventListener('mousedown',@.mouseDown)
mouseDown : (e) ->
console.log(e,@)
上面的两个函数在类 Board
中,当单击画布时,我想从@返回板,但它返回画布 .
我已经尝试将事件监听器/ mousedown函数更改为:
addEvents : () ->
@.canvas.addEventListener('mousedown',(e)->@.mouseDown(e,@))
mouseDown : (e,@) ->
console.log(e,@)
但这会引发错误 unexpected PARAM_END
3 回答
正如您似乎已经想到的那样,您需要使用胖箭头
=>
在函数体内以词法方式绑定this
(又名@
) .使用
mouseDown
方法的胖箭头意味着@
在函数内部而不是在调用时被词义定义...所以它是您在代码中看到的class
的实例,而不是事件的接收者(DOM元素) .请注意,在
@
之后您不需要.
- 您可以编写@canvas
而不是@.canvas
.你需要从函数返回@ ...
你仍然可以在Coffee中明确地做返回...
感谢那个因为把我推向正确方向而删除了他的答案的家伙,
是我的最终解决方案