1

根据jQuery docs调用

pageContainerElement.page({ domCache: true });

将以编程方式缓存特定页面。但是,正如这个github issue正确指出的那样,如果在pagecreate事件之后调用,这将不起作用。

从我的应用程序的主页,用户可以进入另一个页面,在那里他们可以将信息放入其中。此表单上有一个用于模式弹出窗口的按钮,用户可以从中选择某些标签。当此模式关闭并且用户返回到表单时,它会被重置,因为页面已被删除并重新添加。

我可以做的一件事是用表单缓存页面,这样数据就不会被清除。以编程方式执行此操作的唯一方法是

function cachePage() { $('#tags').closest('div[data-role=page]').page({ domCache: true }); }
$(document).on('pagebeforecreate', cachePage);

假设 #tags 只是我要缓存的页面上的一个元素。但是,我现在无法取消缓存页面并让 jQM 清理它。

我想知道我是否正确地解决了这个问题,如果是,如何处理这个页面缓存和禁用。如果我没有正确处理它,我该如何获取它以便保留我的表单并且我仍然可以从模式弹出窗口或附加页面获取表单信息?

编辑

我最近发现的一件事是 jQM 将在 DOM 中保留一个“根”页面,然后是它在表面上加载的任何其他页面。如果我添加data-ajax='false'到表单的所有链接,它们应该可以安全地与任何调用它们的模式一起使用。此外,可以使用相同的方式提交它们data-ajax='false'以重定向到另一个页面,而无需标题栏的后退按钮返回到表单。

这是否比缓存表单页面或将表单数据存储在 JavaScript 中并在加载时重新填充表单更好的方法?

4

1 回答 1

2

如果您有一个伪页面,并且您知道要在 DOM 中持久化,请将data-dom-cache="true"属性添加到伪页面元素中。文档:http: //jquerymobile.com/demos/1.1.0/docs/pages/page-cache.html

如果要删除 DOM 中已缓存的伪页面,请使用.remove()

$('#some-page').remove();

除了元素本身,所有与元素关联的绑定事件和 jQuery 数据都将被删除。要删除元素而不删除数据和事件,请改用 .detach()。

来源:http ://api.jquery.com/remove/

从 DOM 中删除伪页面后,jQuery Mobile 将无法找到它,并且会在您下次导航到伪页面时从外部文档中获取新版本。

于 2012-07-10T20:31:34.333 回答