0

それは私のクラスの拡張バージョンであり、新しく追加されたメソッドにアクセスできません。なぜだめですか?

    class Form
        constructor : (@form) ->

            @form = $ @form

        ajaxSubmit : ->
            $.post @form.attr('action'), @form.serialize(), @submitCallback         

        submitCallback : (response) ->
            $.noop()

    class Login extends Form

        submitCallback : (response) ->
            @good() if response #this.good is not a function
            @bad() unless response #this.bad is not a function

        good : ->
            window.location = @form.attr 'data-go'

        bad : ->
            @form
                .animate({left : -100}, 100)
                .animate({left : 50}, 200)
                .animate({left : -25}, 400)
                .animate({left : 0}, 600)
4

1 に答える 1

2

$.postコールバックはによって選択されたコンテキストで呼び出されて$.postおり、そのコンテキストは@期待しているものではありません(そのページで「コンテキスト」を検索してください)。

デフォルトでは、コンテキストは、呼び出しで使用されるajax設定を表すオブジェクトです(に$.ajaxSettings渡される設定とマージされます$.ajax)。

オブジェクトにバインドするにsubmitCallbackは、fat-arrow(=>で定義する必要があります。

submitCallback: (response) =>
    #...
于 2012-06-13T22:52:46.140 に答える