当前位置: 首页 > 知识库问答 >
问题:

如何在Angular JS(如IONIC)中缓存历史期间的状态(页面)

长孙哲
2023-03-14

IONIC有一个非常好的功能,可以通过使用ion-nav-view“缓存”状态,当用户访问历史上的状态时,它不会重新加载页面——控制器不会被调用,我们可以全局或按页启用缓存。

在网站上工作时,我倾向于直接使用Angular JS而不是IONIC,因为IONIC主要用于移动混合应用程序开发。然而,我非常喜欢爱奥尼亚处理“历史记录”和页面重新加载的方式。我知道我们可以利用Angular服务来保存页面数据并实现类似的功能。但我觉得编写代码很不方便,我们必须把所有东西都投入使用,而不是控制器。

举个例子,我们在a页上进行分页搜索,通过单击每个项目导航到B页以获取详细的项目信息,如果返回到a页,我们不想再次执行分页搜索。我觉得这是大多数网站的一个非常普遍的要求,爱奥尼亚的ion nav视图可以轻松实现此功能,而无需将数据移动到服务中,我想知道是否有任何角度的JS插件或指令可以帮助实现此功能,这与爱奥尼亚的ion nav视图非常相似?

共有3个答案

王航
2023-03-14

历史是航海的结果。所以我想你实际上是在问AngularJS路由,它负责导航和历史管理功能。Angularjs有内置路由器,但ui路由器似乎更为主流,因为它有额外的功能

西门奇希
2023-03-14

您可以使用$window.history.back()

周奇文
2023-03-14

我也在寻找答案,运气不好。一个答案是http://www.tivix.com/blog/dont-forget-the-back-button-in-your-single-page-ap

作者提到了ngRouter的[重新加载搜索]选项,但我对这个答案表示怀疑。

从用户界面-router v0.2.5,也有reloadOnSearch选项,但它不是我们的目的。

另一个答案是http://www.bennadel.com/blog/2801-revisiting-routing-nested-views-and-caching-with-ngroute-in-angularjs-1-x.htm

我认为现在没有简单的方法,您必须保持控制器的状态,在popstate事件上恢复控制器的状态,并再现所有控制器的操作。另一种方法是缓存呈现的html,但angular如何仍能接触到恢复的html?

 类似资料:
  • 我正在爱奥尼亚4中创建一个注销页面,我想要的是清除路由器历史记录,以便“后退”按钮不起作用,另外,我想知道在导航到登录屏幕或导航到登录页面之前,如何销毁注销页面。 我尝试运行构造函数中的代码以清除本地存储,第一次运行正常,但第二次没有运行该代码。据我了解,该页面已经加载,因此不会再次运行构造函数。我尝试将我的代码放在ngDoCheck()中,但它触发了多次,我不想要。 我想清除路由历史记录,以便在

  • 历史状态管理是现代Web 应用开发中的一个难点。在现代Web 应用中,用户的每次操作不一定会打开一个全新的页面,因此“后退”和“前进”按钮也就失去了作用,导致用户很难在不同状态间切换。 要解决这个问题,首选使用hashchange 事件(第13 章曾讨论过)。HTML5 通过更新history 对象为管理历史状态提供了方便。 通过hashchange 事件,可以知道URL 的参数什么时候发生了变化

  • 也许我错过了什么,但我遇到了以前访问过的Ionic缓存视图的问题,阻止了Angular重新初始化组件。组件从某个缓存中提取并呈现为以前存在的任何数据。 示例: 用户A登录到应用程序,并在“主页”上启动与用户A相关的信息。用户A注销并导航到“登录”。 用户B从同一应用程序登录并导航到“主页”。爱奥尼亚·西(Ionic see)的主页之前(由用户A)访问过,视图不是实例化“主页”,而是从缓存中提取并显

  • 问题内容: 我正在开发一个AngularJS应用程序,该应用程序具有捕获所有路由(例如)的功能,这对于从该应用程序的先前(非角度)版本中支持旧版网址格式是必需的。响应捕获的控制器都尝试拉相关对象,如果找不到,则使用该方法重定向到404页面。这可以使用户进入404页面,但是当用户在其浏览器中进行回击时,会将他们带回到最初迫使他们进入404页面的页面,最终他们无法逃脱循环。 我的问题是,是否有1)更好

  • 问题内容: 在不使用服务或在父控制器中构造观察器的情况下,如何使子状态访问主控制器的。 我无法在子状态下访问mainController范围-而是正在获取该范围的另一个实例- 不是我想要的。我觉得我缺少一些简单的东西。在状态对象中有一个共享的数据配置选项,但是我不确定是否应该将其用于这样的事情。 问题答案: 我创建了工作的插件,展示了如何使用和UI- Router。 状态定义未更改: 但是每个状态

  • 问题内容: 我知道我可以跑步: 但是我想不出一种方法来监视应用程序中的更改。 问题答案: 在文档中: https //github.com/angular-ui/ui-router/wiki#state-change- events