【发布时间】:2014-06-15 18:48:53
【问题描述】:
在我的单页应用程序(Javascript (AngularJs) webapp)上,我正在显示一个分页项目列表。
我每页显示 10 个项目。
为了在这个页面在其他页面导航时随时保留用户打开的当前分页,我将当前页码放在浏览器的localStorage中。 下面是一个工作流示例:
- 用户转到
myItemsList.html。 - 他打开第 2 页涉及 url:
myItemsList.html?page=2。 - 然后,他转到另一个页面:
myOtherPage.html。 - 他返回最初指向
myItemsList.html的链接,感谢 localStorage 直接显示页面myItemsList.html?page=2以便可能继续他的导航。
这是否会让用户感到困惑,可能希望将第 1 页视为新的起始导航。
如果我在列表顶部显示“Page 2”之类的标签,以警告他正在查看导航的前面部分,这不是 UX 友好的吗?
或者我应该完全避免持续当前分页吗?
如果我不保留当前查看的页面,可能会发生以下情况:
- 用户转到
myItemsList.html。 - 他打开第2页涉及url:
myItemsList.html?page=2 - 他在此页面(“显示”页面)中打开一个项目,导致:
myItemsList.html?id=123 - 他单击浏览器的后退按钮,导致
myItemsList.html的刷新(从单页应用程序开始)。当前分页(第 2 页)将丢失,用户需要重新启动它才能继续其项目发现。
这看起来真的很敏感......
对于这样的用例,我应该选择什么策略?
【问题讨论】:
-
为什么不用history api?
-
这也可能是一个解决方案,但与此问题相关的许多答案都提到了 localStorage。我很想知道 localStorage 选择的策略。
-
我不相信 localStorage 在您的场景中有用。我会选择 URL + 历史 API。这是一个经典的、经过验证的、直观的解决方案。
-
@Oleg 我同意你的看法。让我们使用历史 API :) 谢谢!
标签: javascript angularjs web pagination single-page-application