jQuery Mobile showPageLoadingMsg()/ hidePageLoadingMsg()方法无法在初始页面加载

时间:2011-08-11 15:49:32

标签: javascript jquery jquery-mobile

我正在使用jQuery Mobile编写一个webapp,它调用一个函数将记录加载到localStorage,并在最初创建页面时使用远程JSON文件创建一个列表视图(使用页面的live.pagecreate()事件)。在此函数的开头是jQuery Mobile方法$.mobile.showPageLoadingMsg()$.mobile.hidePageLoadingMsg()位于函数的末尾。

在初始页面创建时,不会显示加载消息(在iPhone 4上使用iOS 4.3 Safari,Chrome 13和Firefox 5)。但是,我在页面上也有一个刷新按钮;此按钮清除localStorage中的关联记录,然后调用用于最初填充列表视图的相同函数。但是,当从刷新按钮调用相同的功能时,showPageLoadingMsg()hidePageLoadingMsg()都能正常工作,并且“加载”屏幕会出现并消失。我在这里错过了什么吗?

ETA 以下是代码的要点(现在不在实际代码的前面,如果你需要更多,我会把它放在今晚)。我还应该提一下,我已经尝试将showPageLoadingMsg放入(document).ready并试图将它绑定到mobileinit并且都没有工作:

function loadListView(){
   $.mobile.showPageLoadingMsg();
   //ajax call to pull JSON
   //$.each loop to load localStorage and listview
   $.listview.refresh('list');
   $.mobile.hidePageLoadingMsg();
}

$(#listpage).live('pagecreate', function(event){
   loadListView(); // showPageLoadingMsg() and hidePageLoadingMsg do not work when the function is called here
});

function clearList(){
   //for loop that clears each item in localStorage that matches the key prefix set in loadListView
}

//runs when refresh button is clicked
$('listrefresh').live('click',function(){
   clearList();
   loadListView(); //showPageLoadingMsg() and hidePageLoadingMsg() work when the function is called here
});

1 个答案:

答案 0 :(得分:1)

  

在初始页面中调用这些处理程序   加载,你必须在jQuery Mobile执行之前绑定它们。这可以   在mobileinit处理程序中完成,如全局配置中所述   页。

文档:

  

在初始化页面上触发,初始化后发生。   我们建议绑定到此事件而不是DOM ready(),因为这样   无论页面是直接加载还是加载,都可以使用   内容作为Ajax导航的一部分被拉入另一个页面   系统

示例:

在示例中,没有任何实时事件在初始页面加载时触发,您必须在mobileinit中配置此类操作: