Я пытаюсь показать анимацию загрузки во время вызова функции, который занимает некоторое время.Вызов функции ищет большой массив, который уже загружен.После поиска соответствующие элементы вставляются в таблицу.Таблица очищается перед началом поиска.
Проблема в том, что анимация отображается только в краткий момент, когда страница обновляется.
Вот мой код:
var interval = setInterval(function ()
{
$.mobile.loading('show');
clearInterval(interval);
}, 1);
DoSearch(term, function ()
{
var interval = setInterval(function ()
{
$.mobile.loading('hide');
clearInterval(interval);
}, 1000);
});
//The search function looks like this (detail omitted for brevity):
function DoSearch(term)
{
$("table#tableICD tbody").html('');
// also tried:
/*$("table#tableICD tbody")
.html('')
.table()
.closest("table#tableICD")
.table("refresh")
.trigger("create");*/
var tr = '';
$.each(codes, function (key, value)
{
// determine which items match and add them as table rows to 'tr'
});
$("table#tableICD tbody")
.append(tr)
.closest("table#tableICD")
.table("refresh")
.trigger("create");
callback();
}
Поиск работает правильно и добавляет строки в таблицу.У меня есть два неожиданных поведения:
Таблица не очищается, пока поиск не будет завершен.Я попытался добавить .table ("refresh"). Trigger ("create") в строку, где я установил tbody html в пустую строку.Это не помогает.(см. закомментированную строку в коде)
Как я уже говорил, анимация кратковременно отображается во время обновления экрана.(Заметьте, что я установил интервал в 1000 во второй функции setInterval, чтобы я мог его увидеть.)
Советы, которые я прочитал, состоят в том, чтобы использовать setInterval вместо прямого вызова $.mobile.loading, что я сделал и поместил поиск в функцию и использовал обратный вызов, что я также сделал.
Есть идеи?