一尘不染

AngualrJS:在HTML刷新上维持数据

angularjs

有什么方法可以将少量数据加载到angular js的某些缓存中,页面的onrefresh从缓存中加载这些数据并再次显示?

现在的问题是,每当我刷新页面时,由于所有JS都会在刷新页面时重新加载,因此将重新启动sharedServices应用共享的详细信息。

我有一个登录页面和一个主页。登录成功后,我使用$
route路由到主页,并将loginID广播到Homepage控制器。现在,当我刷新此主页或复制url并粘贴到另一个选项卡中时,我希望存在相同的数据。但就我而言,由于htmls
/ javascripts已重新加载,因此将其初始化为null。

这里有可用的角度技术吗?


阅读 180

收藏
2020-07-04

共1个答案

一尘不染

看一下这个讨论

对于少量数据(<= 4k),可以使用$
cookieStore
,但是在那之后,您需要研究localStorage,请记住,localStorage将您的应用程序与HTML5兼容的浏览器相关联。

如果您不介意后端有一点状态,那也是一种选择。

*根据第一个评论进行 *编辑

听起来您的目标是,当用户单击刷新时,页面看起来应该好像他们从未点击过页面一样。每当这些更改发生时,您就必须将整个应用程序状态持久化到localStorage(范围,DOM属性,有状态服务)。不确定是否建议这样做。

但是,您可以足够接近地起作用:

扩展上面的答案:

  • 使用URL通过Angular的$ route服务描述应用程序状态。我一直喜欢这篇文章来解释URL和状态,尽管该文章是Ember特有的。

  • 至于阻止客户端在刷新时重新加载脚本,则无法执行此操作-最接近的是让服务器为这些脚本返回304(未修改)代码。

  • 如上所述,范围数据和服务状态必须保留在本地存储中。

尽管刷新问题很烦人,但实际上迫使您进行尽可能无状态的思考,并且无状态代码更易于维护和测试。如果您正在寻找上行空间:)

2020-07-04