0
class A
    () ->
    method: ->
    method2: ->
        $ 'a' .each ->
            href = $ @ .attr 'href'
            @method href

私の jQuery 関数では、実際には両方のスコープが必要なので、匿名関数のバインド方法を変更することはできません。method2 の先頭に置いてからself = @使用できますself.method。いつも利用したいself.methodです。しかし、私はそれをすべての関数の最初に置きたくありません。

selfコンストラクターで常に存在して指すように設定する方法はあり@ますか? 私が試したことはすべて失敗しました。selfメソッドでは常に未定義でした。

LiveScript と非常によく似ているので、Coffeescript をタグとして付けました。

4

1 に答える 1

1

波線矢印~>を使用すると、コンテキストを下に運ぶことができるため、次のことを回避できますself = @

method2: ->
  $ \a .each (, el) ~>
    href = $ el .attr \href
    @method href

コールバックで jQuery 要素をパラメーターとして渡し、波線矢印を使用し続けると、コンテキストが常にインスタンスになります。

于 2013-11-11T10:37:29.733 に答える