Я пытаюсь показывать анимацию загрузки / счетчик при каждом Ajax запросе
моем приложении. js
$(document).on("turbolinks:load", function() {
window.addAjaxLoaderHandler();
});
window.addAjaxLoaderHandler = function() {
$(document).on('ajax:send', function() {
$('#ajax-loader').show();
});
$(document).on('ajax:complete', function(){
setTimeout(() => {$('#ajax-loader').hide();}, 100);
});
}
Это отлично работает, ДО ТОГО, КАК я загружаю удаленную форму по AJAX. Если я отправлю эту недавно загруженную форму, ajax:send
сработает, но после завершения (без каких-либо ошибок) ajax:complete
не будет (счетчик не будет скрыт).
Проблема, похоже, в том, что я удаляю загруженная форма с вызовом ajax.
Что я могу сделать, чтобы это работало?
Я просто пытаюсь щелкнуть ссылку, загрузить форму и удалить форму после отправки информация.
ОБНОВЛЕНИЕ
Мое приложение. html .haml (я использую HAML, поэтому синтаксис соответствует, поэтому #...
означает <div id="...">#all indented code lines#</div>
)
#main
= yield
#ajax-loader
Форма будет загружена как:
$('#main').append('<%= j(render(:partial => 'new', :locals => {:model => @model})) %>');
Проблема в том, что #ajax-loader
не скрыт и все еще отображается после отправки формы.
Я думаю, проблема То есть я удаляю элемент запуска AJAX -call. Но я надеялся, что, поскольку я привязал слушателя к document
, он все равно срабатывает.
Конечно, в этом случае я просто могу сделать $('#ajax-loader').hide();
, но я пытаюсь понять, почему ajax:complete
не срабатывает.