【问题标题】:JQM back button loses data of previous pageJQM后退按钮丢失前一页数据
【发布时间】:2013-05-09 17:38:54
【问题描述】:

我对 Jquery 移动和后退按钮功能有疑问。

我有一个页面在显示时在远程服务器上运行 ajax 请求。 Ajax 通过 pagebeforeshow 事件启动。当我使用多个 html 文件时,此事件附加到具有 [data-role="page"] 属性的 div:

 <div data-role="page" data-theme="b" id="Favorites">
   <div data-role="content" data-theme="b">
    <div id="Ajax">
            DISPLAY AJAX RESULT CONTAINING LINK TO OTHER HTML PAGE
        </div>
    </div>
 </div>

这里是javascript:

$('#Favorites').on('pagebeforeshow', function(event) {
   LaunchAjax();   
});     

第一次显示页面时,这可以正常工作。 但是,ajax 结果包含指向用户可以关注的另一个页面的链接。 当用户点击链接时,我会显示一个后退按钮(使用 jquery mobile 生成),以便他返回包含 ajax 结果的初始页面。

但是,当单击返回按钮时,初始页面显示为空白。 我希望显示由 ajax 生成的最后一个结果,或者至少是一种重新启动 ajax 函数以显示初始结果的方法。

我尝试过使用 JQM 缓存:

 $.mobile.page.prototype.options.domCache = true;

但这并没有解决我的问题,而且 DOM 元素看起来没有正确缓存(可能是因为我使用了单独的 html 文件)

我已经在 Chrome 桌面和 Android 上使用 phonegap 测试了我的应用,这两个问题都存在。

有人有正确的方法吗?

非常感谢

最好的问候。

【问题讨论】:

    标签: jquery jquery-mobile jquery-mobile-button


    【解决方案1】:

    您使用了错误的页面事件绑定方式。成功绑定页面事件的唯一方法是通过委托绑定。

    所以代替这段代码:

    $('#Favorites').on('pagebeforeshow', function(event) {
        LaunchAjax();   
    });
    

    使用这个:

    $(documents).on('pagebeforeshow', '#Favorites',function(event) {
        LaunchAjax();   
    });    
    

    【讨论】:

    • 非常感谢 Gajotres 的回答。这解决了我的问题并带来了正常的行为。只是一个问题,我已经在我的页面上添加了一个搜索输入(因此加载时不会显示数据),有没有办法让 JQM 在使用后退按钮返回页面时带来最后的搜索结果,或者它有以编程方式处理?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多