我正在使用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
});
答案 0 :(得分:1)
在初始页面中调用这些处理程序 加载,你必须在jQuery Mobile执行之前绑定它们。这可以 在mobileinit处理程序中完成,如全局配置中所述 页。
文档:
在初始化页面上触发,初始化后发生。 我们建议绑定到此事件而不是DOM ready(),因为这样 无论页面是直接加载还是加载,都可以使用 内容作为Ajax导航的一部分被拉入另一个页面 系统
示例:
在示例中,没有任何实时事件在初始页面加载时触发,您必须在mobileinit中配置此类操作: