Rails 3 UJS запускает цикл while при ожидании ajax:callback
Это мой JavaScript для :remote => true
форма.
В настоящее время при отправке формы эта функция запускается один раз. (ширина увеличивается на 5%.
Однако я хочу, чтобы эта анимация работала в цикле, так что ширина будет увеличиваться с шагом 5%, пока я не получу обратный вызов ajax:success или ajax:fail, после чего я хочу перейти к другой функции.
$('#new_message').bind('ajax:loading', function() {
$('#send_bar').animate({
width: '+=5%'
});
});
1 ответ
Решение
Объявите функцию, которая запускает анимацию, а затем в параметре завершения передайте функцию так, чтобы она вызывала себя рекурсивно:
var start_animation = function() {
$('#send_bar').animate({width: '+=5%'}, 5000, 'linear', start_animation);
}
В функции загрузки вызовите функцию, чтобы начать анимацию:
$('#new_message').bind('ajax:loading', function() {
start_animation();
});
Тогда в вашей привязке к ajax:success и ajax:fail, вызовите stop:
$('#new_message').bind('ajax:success', function() {
$('#send_bar').stop();
});
$('#new_message').bind('ajax:failure', function() {
$('#send_bar').stop();
});