我正在使用jquery mobile和cordova创建一个移动应用程序。我已成功从json ajax调用加载动态列表视图。我的问题是,当我导航到另一个页面,然后按后退按钮时,原始页面的列表视图不会加载,并且没有任何内容。如果我刷新页面,则会显示列表视图。我不是每次导航到这个页面时刷新整个页面,而是如何刷新listview?
我已尝试在DOM和窗口加载时以及使用$(document).on(“pagebeforeshow”,“#pagenamehere”,function(){})之前刷新listview。无济于事。
更具体地说,我有两个包含listviews的页面。导航步骤如下: 1.加载第1页:列表视图显示 2.导航到第2页:其列表视图不显示 3.按回:第1页列表视图显示 4.导航到第2页:其列表视图仍未显示 5.刷新第2页:它的列表视图显示 6.按回:第1页的列表视图不显示
此过程应清楚地表明listview仅在直接输入或重新加载url时加载;由于某种原因,页面之间的导航(不同的html文件)打破了这一点。
答案 0 :(得分:0)
如果第二页的head标签内有脚本,并且该页面是通过Ajax加载的,那么脚本将不会执行。
尝试从第二页div(<div data-role="page" id="mySecondPage">
)内的head标签移动脚本,或创建一个JS文件并在第一页加载时加载它。相关示例here
jQuery Mobile使用Ajax来执行页面转换,因此在转换过程中,jQuery Mobile将仅注入响应的body元素(或更具体地说是data-role =“page”元素)的内容。页面顶部不会使用任何内容(页面标题除外)。
总之,当通过Ajax加载页面时,页面头部引用的任何脚本和样式都不会产生任何影响。如果通过HTTP请求页面,它们将执行,这就是为什么在整页刷新后加载listview的原因。