2

この作業を行うための最良のアプローチを見つけようとしています:

class Person

  constructor: (@el) ->
    @el = $(el)
    this.bind()

  bind: ->
    @el.find('.something').on 'click', ->
      $(this).hide()       # conflict!
      this.do_something()  # conflict!

  do_something: ->
    alert 'done!'

ハッシュロケット(=>)を使用してコールバック内からアクセスできることは承知してthis.do_somethingいますが、それは と競合するcallback 'this'ため、jquery は ではなくオブジェクトを選択しようとしていますelement '.something'。これを解決するには?

4

1 に答える 1

3

this異なるオブジェクトを参照することはできません。thisインスタンスの参照を補助変数に格納して、別の識別子を使用します。

  bind: ->
    person = this
    @el.find('.something').on 'click', ->
      $(this).hide()
      person.do_something()
于 2013-04-17T15:09:32.763 に答える