5

一般的な問題に対するエレガントな解決策を探しています:

いくつかのイベントをサブスクライブするクラスを取得しました。ハンドラーをクラス内のインスタンス メソッドにしたいだけでなく、イベント コンテキスト (この場合にイベントが発生した要素) も取得したいと考えています。

メソッド定義に太い線の構文を使用していますが、イベント コンテキストを取得する方法がありません。具体的には、私はraphael jsを使用しています。要素を購読するとき、イベントオブジェクトには要素が含まれず、dom要素のみが含まれるため、イベントコンテキストがなければ、紙内のraphael idで要素を検索する必要があります。気に入らない。

この場合のベストプラクティスは何ですか? イベントをサブスクライブするたびに、コンテキストにインスタンス参照と要素参照が含まれる前に、現在新しいコンテキスト オブジェクトを作成しています。

4

1 に答える 1

5

あなたが正しく理解している場合は、ハンドラー関数でバインドされたコンテキストとバインドされていないコンテキストの両方への参照を保持したいと考えています。太い矢印と同様のことを手動で行うことで、これを実現できます。

class TheListenerObject
  constructor: ->
    context = @ # some people may call it `self`
    @theHandlerMethod = () ->
      referenceToTheListenerObjectInstance = context
      referenceToTheUnboundContext = @
于 2012-04-12T07:18:42.513 に答える