【问题标题】:jQuery mobile temporary page cachingjQuery 移动临时页面缓存
【发布时间】:2012-07-10 20:23:21
【问题描述】:

根据 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 中并在加载时重新填充表单更好的方法?

【问题讨论】:

    标签: jquery forms jquery-mobile modal-dialog


    【解决方案1】:

    如果您知道要在 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 将无法找到它,并会在您下次导航到伪页面时从外部文档中获取新版本。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-15
      • 1970-01-01
      • 2011-10-19
      • 1970-01-01
      • 2012-11-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多