2013-12-19 4 views
1

Я использую JQuery Mobile 1.4.0 для создания кросс-платформенного приложения и будет создан по телефонной запинке. Например, у меня было две страницы, одна #homepage, другой #detail страницаСкрыть загрузку счетчика после завершения события ajax

<div id="home" data-role="page> Home Page 
    <a href="#detail">Go Detail</a> 
</div> 
<div id="detail" data-role="page> Detail Page </div> 

JQuery Mobile использовать по умолчанию Ajax для загрузки страниц в DOM, который прекрасно, моя проблема заключается в том, что до деталей страницы шоу, мне нужно получать данные с удаленного сервера через ajax-вызов. Я регистрирую событие ajaxStart и ajaxComplete в документе, чтобы показать и показать/скрыть счетчик.

$(document).ajaxStart(function(){ 
    $.mobile.loading('show'); 
}); 
$(document).ajaxComplete(function(){ 
    $.mobile.loading('hide'); 
}); 

Проблема заключается в JQuery мобильный скрыть загрузка кок перед тем ajaxComplete вызывается в методе перехода, поэтому на самом деле $ .mobile.loading («скрыть») будет называться дважды. Это не хорошо, потому что данные не были заполнены в DOM, поэтому подробная страница будет пустой, а через некоторое время данные будут вставлены.

Если вы не знаете, что я говорю, вы можете посмотреть в JQuery исходный код мобильного, и вы можете увидеть линии 5070

this._triggerCssTransitionEvents(to, from, "before"); 

// TODO put this in a binding to events *outside* the widget 
this._hideLoading(); 

Так что мой вопрос заключается в том, чтобы действительно скрыть загрузку кок после ajaxComplete не после перехода страницы?

Большое спасибо за помощь.

+0

В одном из своих последних приложений, которые я спрятал блесну в '$ (документ) .load' событие, а также на' $ (документ) .ajaxStop' события, работал без каких-либо проблем. – wf4

+0

@EthanZ Это расстроило меня какое-то время, разрешили ли вы это? – ModusPwnens

ответ

0

изменение с complete до stop, которое остановит загрузку спрятателя слишком быстро.

$(document).ajaxStart(function() { 
    $.mobile.loading('show'); 
}); 

$(document).ajaxStop(function() { 
    $.mobile.loading('hide'); 
}); 
+0

Это не работает, потому что jquery mobile фактически скрывает счетчик при перемещении между страницами из-за перехода. – EthanZ

Смежные вопросы