2012-06-13 3 views
0

Это расширенная версия моего класса. Я не могу получить доступ к новым добавленным методам. Почему нет?метод использования coffeescript в расширенном методе

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) 

ответ

2

Ваш $.post обратного вызова вызывается в контексте выбранного $.post и that context isn't the @ that you're expecting it to be (поиск для «контекста» в этой странице):

По умолчанию контекст является объектом, который представляет Аякса настройки, используемые в вызове ($.ajaxSettings, объединенные с настройками, переданными в $.ajax).

Вы должны определить ваш submitCallback с fat-arrow (=>), чтобы связать его к объекту:

submitCallback: (response) => 
    #... 
+0

спасибо. Это было странно, как ад. – Fresheyeball

Смежные вопросы