在jQuery mobile上显示数据请求前的页面

时间:2013-05-22 12:20:25

标签: cordova jquery-mobile

当我的移动网络应用程序(在PhoneGap内部运行)启动时,它会从服务器执行数据请求。问题是屏幕在执行此请求时保持黑屏。当这个请求在启动之外的任何时间执行时,应用程序会显示一个加载对话框,为用户提供一些反馈信息,说明正在加载,但在启动时,它不会以这种方式运行。

我正在pageshow事件处理程序中执行请求。

以下是代码:

$("#home").on("pageshow", onHomeShow);

...

function onHomeShow() {
    syncData();
}

function syncData() {
   // show loading dialog and get the data here
}

非常感谢任何和所有帮助。提前谢谢。

2 个答案:

答案 0 :(得分:1)

然后你应该自己触发ajax loader,它可以轻松完成。它将向用户表明正在发生的事情。如果可能的话,还可以在某些早期页面事件中初始化您的方法,例如pagebeforecreate。

工作示例:http://jsfiddle.net/Gajotres/Zr7Gf/

$(document).on('pagebeforecreate', '[data-role="page"]', function(){     
    setTimeout(function(){
        $.mobile.loading('show');
    },1);    
});

$(document).on('pageshow', '[data-role="page"]', function(){  
    setTimeout(function(){
        $.mobile.loading('hide');
    },300);      
});

在我的示例中,需要setTimeout,因为除非使用setTimeout或setInterval执行,否则web-kit浏览器不会显示加载器。使用此块:

setTimeout(function(){
    $.mobile.loading('hide');
},1);  

当你的函数执行结束时。如果您想了解有关jQM页面事件的更多信息,请查看我的其他答案: jQuery Mobile: document ready vs page events 或官方 documentation

编辑:

我忘了,将 [data-role="page"] 替换为您首页的 id

答案 1 :(得分:1)

如果你做这样的事情

document.addEventListener('deviceready', this.onDeviceReady, false);

function onDeviceReady() {
syncData();
}