PhoneGap如何使用一页应用刷新/重新加载页面

Posted

技术标签:

【中文标题】PhoneGap如何使用一页应用刷新/重新加载页面【英文标题】:PhoneGap how to refresh/reload page using one page app 【发布时间】:2015-06-18 21:50:07 【问题描述】:

目前,我有一个使用车把模板的单页应用程序。它具有由该页面的特定类控制的搜索功能,该页面是 /#page/1 然后当您单击搜索结果时,它会将您带到另一个页面,该页面由名为 /# 的单独外部类控制参展商/432(参展商ID是末尾的数字)。

当我单击返回时,PhoneGap 在 ios/Safari 中加载搜索页面 (#page/1),除非我使用 location.reload() 重新加载整个 html 页面,否则应用程序将缓存第一个搜索输入,它不会接受新的输入。

我曾尝试使用 location.hash 在哈希末尾添加一个随机字符串,但只有在单击后退按钮时使用 location.reload() 重新加载整个 HTML 页面时才会起作用。

android/Chrome 没有问题。

关于如何重新加载 HTML 并重新加载位于 #page/1 的搜索页面的任何反馈,我将不胜感激。我曾尝试使用 location.href = url/#page/1,但它会加载没有任何动态数据的页面。

【问题讨论】:

你有没有考虑过使用backbone.js?如果没有,我强烈建议你看看它,尤其是Router。它将帮助您解决这个问题,并且会以一种非常简洁的方式完成。干杯。 这很有帮助。谢谢你,我会考虑实施这个。 【参考方案1】:

关于这个话题的更多想法:

1) 经验法则是避免重新加载整个 HTML 页面。那么我们怎样才能做到这一点呢?在您的 HTML 页面中,您应该有一个特定的 DIV,您可以根据需要对其进行操作。例如,在/#page/1 上,您应该设置该DIV 的内容,无论#page/1 应该做什么,当用户点击搜索时,搜索内容应该显示在该字段中。 (请注意,我说的是 UI 方面的事情。实际搜索可以由其他服务完成,您可以从您的页面对该服务进行 AJAX 调用)。

2) 您将监听各种事件(例如 /#page/1、用户点击搜索按钮、服务器返回搜索结果或服务器返回错误消息等)。根据发生的情况,您应该相应地装饰该 DIV。

示例 HTML:

<!DOCTYPE html>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <meta name="format-detection" content="telephone=no"/>
    <meta name="viewport"
          content="user-scalable=no, initial-scale=1, maximum-scale=1, minimum-scale=1, width=device-width, height=device-height"/>

    <title>Example</title>


</head>
<body>
<div id="jQUi">
    <div id="content">
    </div>
</div>

</body>
</html>

在上面的 HTML 中,我使用 id 为“content”的 div。方法如下:

document.addEventListener("deviceready", letGetGoing, false);

...

function letsGetGoing()
   $('content').html(useTemplateNamed('page1Template'));
   $('.search').on('change', switchToSearch);


function switchToSearch()
   $('content').html(useTemplateNamed('search'));
   $('.submit').on('change', verifyAndSendToServer);

...

以上是伪代码。我写它只是为了给你一个想法。

我希望它有所帮助。

【讨论】:

以上是关于PhoneGap如何使用一页应用刷新/重新加载页面的主要内容,如果未能解决你的问题,请参考以下文章

如何在另一页面的事件中重新加载或刷新一个页面的存储数据

用于加载联系人的Phonegap Jquery Pagination - 当用户到达最后一页时如何动态添加页面?

页面重新加载后如何保持在反应(antd)表中的同一页面

SP插入后,下一页有一个空结果,直到重新加载

Phonegap + Crosswalk - 禁用拉动刷新效果

Android 组件导航如何防止地图页面在每次点击时刷新