使用jQuery mobile我使用动态“页面”模板,根据用户输入插入自定义内容。
这一切都有效,但是一旦页面被缓存就会被创建,如果您返回并进行新选择,则不会显示新值。我尝试过应用以下修复程序:
$('#instrument').bind('pagehide', function(){
$(this).remove();
});
哪个会删除该页面,但如果您尝试导航回该页面,则不会重新初始化,我会继续将其推回到我应用的开头。
必须使用pagebeforecreate
将动态内容添加到页面中(实际HTML似乎并不重要,因此我不会在此处包含它),否则将不会格式化。如果我使用pagebeforeshow
,则内容将不会被格式化,但如果您返回并进行新选择,内容将会更改。
我意识到pagebeforecreate
将缓存页面,但由于内容未格式化,我似乎无法使用任何其他方法:(
我无法为我的生活找到解决办法!
答案 0 :(得分:5)
尝试使用pagebeforeshow
,但在显示页面时调用page()
以修复所有格式。
像这样:
$('#instrument').bind('pagebeforeshow', function() {
// Do your content insertion
});
$('#instrument').bind('pageshow', function() {
$(this).page();
});
您可能会发现这只有“一半”有效(在更新页面时不会更新格式化),在这种情况下,您可以尝试this trick:将页面包装在临时元素中并调用{{1在包装器上。
page()
答案 1 :(得分:1)
新的DOM缓存管理功能:默认情况下为
由于动画页面转换需要您所在的页面 而你正在转换的那个都在DOM中,我们添加页面 导航时到DOM。到目前为止,那些页面会 继续留在DOM中,直到你完成整页刷新 一直担心我们可能会在某些方面达到内存上限 设备并导致浏览器减速甚至崩溃。
对于Beta 2,我们添加了一个简单的机制来保持DOM整洁。它 这样工作:每当通过Ajax加载页面时,它都会被标记 一旦您导航到另一个页面,从DOM中删除 (技术上,在页面上)。如果您返回已删除的页面,则 浏览器可能能够从它的缓存中检索文件,或者它会 如果需要,从服务器重新请求它。在嵌套列表的情况下,我们 导航到后,删除构成嵌套列表的所有页面 一个不属于列表的页面。包含在页面中的页面 多页设置不受此功能的影响 - 仅限页面 由Ajax引入的是由jQuery Mobile以这种方式管理的。
名为domCache的新页面选项控制是否保留页面 在DOM中作为缓存它们的方式(用于工作的方式)或 保持DOM清洁并删除隐藏页面(新方法)。默认情况下, domCache设置为false以保持DOM大小的主动管理。如果你 将此设置为true,您需要注意自己管理DOM 在各种设备上彻底测试。
要在各个页面上设置domCache选项 有选择地缓存页面,你可以添加data-dom-cache =“true” 属性到页面容器或以编程方式设置它:
elem.page({ domCache: true });
domCache选项也可以全局设置。这是如何转向 DOM缓存,因此它的工作方式与原来一样:
$.mobile.page.prototype.options.domCache = true;
答案 2 :(得分:0)
我已用这个简单的解决方案解决了这个问题:
将另一个带随机号码的参数添加到您的网址http://www.yourdomain.com/ws.php?opcion=1&**cache_hack=" +Math.random();**
带有随机的最后一个参数使“diferente”调用和jquery mobile不缓存.-
还要添加你的php脚本:
`header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Cache-Control: no-cache");
header("Pragma: no-cache");`