Как убедиться, что сценарии JQuery в конвейере ресурсов Rails вызываются после JS для конкретного контроллера?

0

Например:

У меня есть сценарий обработки общей формы, который работает следующим образом:

function default_form_method(){
    $("form[data-remote='true']").bind("ajax:error", function(evt, xhr, status, error){
        //show the errors, etc.

    })
    .bind('ajax:success', function(evt, data, status, xhr){
// clear the form, etc.

    });
}

Теперь, когда я загружаю форму удаленно, через частичную, такую как index.js.erb:

$(function(){
    $(".listing").html("<%= escape_javascript(render 'matches/a_cool_form') %>");
});

Недавно загруженная форма не имеет привязки к default_form_method. Раньше я исправил это, снова вызвав метод в js.erb следующим образом:

 $(function(){
        $(".listing").html("<%= escape_javascript(render 'matches/a_cool_form') %>");
default_form_method();
    });

Но это кажется излишним, и мне интересно (?), Если это замедляет производительность.

Какое решение всегда нужно привязать методы конвейера к ресурсам, даже если форма загружена на стороне клиента? Я предполагаю, что это связано с загрузкой функции last.

Теги:
ruby-on-rails-3

1 ответ

0

Это потому, что bind привязывается только к существующим элементам, а не к динамически загружаемым элементам. Пытались ли вы on (замена live)?

function default_form_method(){
    $("form[data-remote='true']").on("ajax:error", function(evt, xhr, status, error){
        //show the errors, etc.
    })
    .on('ajax:success', function(evt, data, status, xhr){
      // clear the form, etc.
    });
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню