2016-08-18 2 views
1

Может ли кто-нибудь объяснить, почему моя переменная @model недоступна внутри моего вызова ajax? Когда я пытаюсь использовать переменную @model внутри моего обратного вызова ошибки, ее не существует.переменная недоступна внутри вызова ajax

$.ajax URL+ "/api/v1/menu_items/#{@model.id}/verify", 
    type: 'PUT' 
    data: formData 

    error: (response) -> 
     alert(response) 
     window.location.href = "/menu_items/#{@model.id}" 
    success: (data) -> 
     window.location.href = "/menu_items/#{data.id}"  
+0

Читайте о [ '$ .ajax'] (http://api.jquery.com/jQuery.ajax/) и выяснить, что использует как' this' в обратных вызовов. Тогда, возможно, используйте '(response) =>' для использования связанных функций. –

ответ

0

Использование => fat arrow если вы хотите сохранить this в внешней области определения функции.

Проверьте комментарии ниже.

$.ajax URL+ "/api/v1/menu_items/#{@model.id}/verify", 
    type: 'PUT' 
    data: formData 

    # this reference to the `this' where $.ajax is called. 

    error: (response) => # a function definition here. use => to bind this to the outer scope 
     alert(response) 
     window.location.href = "/menu_items/#{@model.id}" 
    success: (data) -> 
     # in this function, this will be bound to the object on which the success callback is called, normally, null 
     window.location.href = "/menu_items/#{data.id}" 
Смежные вопросы