Coffee脚本 - 保留类上下文和事件上下文

时间:2012-04-12 07:01:21

标签: javascript coffeescript raphael

寻找一个常见问题的优雅解决方案:

我有一个订阅了几个事件的类,我希望处理程序是我的类中的实例方法,但也想获取事件上下文(为这种情况触发事件的元素)。

我正在使用胖线语法进行方法定义但无法获取事件上下文。具体来说我正在使用raphael js,当在元素上订阅时,事件对象不包含元素,只有dom元素,所以没有事件上下文我将不得不通过它在文件里面的raphael id搜索元素,而我不喜欢它。

在这种情况下,最佳做法是什么?我正在每次订阅事件之前创建一个新的上下文对象,上下文包含实例引用和元素引用。

1 个答案:

答案 0 :(得分:5)

如果我理解正确,您希望在处理函数中保留对绑定和未绑定上下文的引用。您可以通过手动执行类似于胖箭头的操作来实现此目的:

class TheListenerObject
  constructor: ->
    context = @ # some people may call it `self`
    @theHandlerMethod = () ->
      referenceToTheListenerObjectInstance = context
      referenceToTheUnboundContext = @