根据jQuery docs调用
pageContainerElement.page({ domCache: true });将以编程方式缓存特定页。但是,正如此github issue正确指出的那样,如果在pagecreate事件之后调用,这将不起作用。
从我的应用程序的主页,用户可以转到另一个页面,在那里有一个表单,他们可以在其中输入信息。此表单上有一个用于弹出模式的按钮,用户可以从中选择某些标签。当此模式关闭并且用户返回到表单时,它将被重置,因为页面已被删除并重新添加。
我可以做的一件事是将页面与表单一起缓存,这样数据就不会被清除。以编程方式完成此操作的唯一方法是
function cachePage() { $('#tags').closest('div[data-role=page]').page({ domCache: true }); }
$(document).on('pagebeforecreate', cachePage);假设#tag只是我想要缓存的页面上的一个元素。但是,我现在不能取消对页面的缓存,并让jQM清理它。
我想知道我是否正确地处理了这个问题,如果是的话,如何处理这个页面缓存和禁用。如果我没有正确地处理它,我如何才能使它保留我的表单,并且我仍然可以从模式弹出窗口或附加页面中获取表单的信息?
编辑
我最近发现的一件事是,jQM将在DOM中保留一个“根”页面,后面是它加载到表面上的任何其他页面。如果我将data-ajax='false'添加到所有转到表单的链接,它们应该可以安全地与在它们上调用的任何模态一起使用。此外,对它们的提交可以使用相同的data-ajax='false'重定向到另一个页面,而不是标题栏的后退按钮返回到表单。
与缓存表单页面或在JavaScript中存储表单数据并在加载表单时重新填充表单相比,这是一种更好的方法吗?
发布于 2012-07-11 04:31:34
如果您有一个需要在DOM中持久化的伪页面,那么可以将data-dom-cache="true"属性添加到伪页面元素中。文档:http://jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html
如果要删除已缓存的DOM中的伪页,请使用.remove()
$('#some-page').remove();除元素本身外,还将删除与元素关联的所有绑定事件和jQuery数据。要删除元素而不删除数据和事件,请改用.detach()。
来源:
一旦从DOM中删除了伪页面,jQuery移动版将无法找到它,并在下次导航到伪页面时从外部文档中获取一个新版本。
https://stackoverflow.com/questions/11421339
复制相似问题