【发布时间】:2013-12-19 14:08:59
【问题描述】:
我正在使用 JQuery Mobile 1.4.0 构建跨平台应用程序,并将通过 phonegap 构建。例如我有两个页面,一个是#homepage,另一个是#detail page
<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 mobile 在转换方法中调用 ajaxComplete 之前隐藏了加载微调器,因此实际上 $.mobile.loading('hide') 将被调用两次。这不好,因为数据尚未填充到 DOM 中,因此详细信息页面将是白色空白,然后在插入数据一段时间后。
如果你不知道我在说什么,你可以查看 jquery 移动源代码,你可以看到第 5070 行
this._triggerCssTransitionEvents( to, from, "before" );
// TODO put this in a binding to events *outside* the widget
this._hideLoading();
所以我的问题是如何在 ajaxComplete 之后而不是在页面转换之后真正隐藏加载微调器?
非常感谢您的帮助。
【问题讨论】:
-
在我最近的一个应用程序中,我将微调器隐藏在
$(document).load事件和$(document).ajaxStop事件中,没有任何问题。 -
@EthanZ 这让我沮丧了一段时间,你解决了吗?
标签: jquery jquery-mobile