28

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

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

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

这里有任何角度技术吗?

4

1 回答 1

34

看看这个讨论

对于少量数据(<= 4k),您可以使用$cookieStore,但之后您需要查看localStorage,请记住 localStorage 将您的应用程序与 HTML5 兼容的浏览器联系起来。

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

根据第一条评论进行编辑

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

但是,您可以足够接近以发挥作用:

从上面扩展答案:

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

  • 至于阻止客户端在刷新时重新加载您的脚本,没有办法做到这一点 - 您最接近的是让您的服务器为这些脚本返回一个 304(未修改)代码。

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

尽管刷新问题很烦人,但它实际上迫使您尽可能无状态地思考,无状态代码更容易维护和测试。如果您正在寻找好处:)

于 2012-09-27T12:39:03.750 回答