0

我在使用RouteProvider的AngularJS设置中有一个标准的Master> Details页面。如何使用AngularJS RouteProvider缓存页面?

母版页有一个“无限滚动”的变体,其中可以在两端添加和删除数据。例如,用户正在查看联系人列表,并且已滚动到联系人列表的第312个条目,只保留编号为200-400的联系人,并将条目1-200从范围中删除。当然,当用户向下滚动到360以上时,该列表会附加401-500。如果滚动到240以上,该列表将以100-199“预先填写”。

现在,用户可以点击一个特定的联系人并转到详细信息页面。当按下“返回”(window.history.back)如何使与母版页重新渲染,

  1. 精确列表200-400,因为它是当网页被留

  2. 滚动到312的位置

  3. (重要)听众仍然正确听取超过360或240以上的滚动事件吗?

这甚至可能吗?如果是的话,请帮助我如何。

回答

0

我不会写代码这一点,这是一个有点困难,而不怎么你的无限滚动的作品有了更深的了解,但会提供一些想法

你需要将存储视图的第一件事状态,并在与服务同步的localStorage中提供更健壮的持久性(页面重新加载或返回访问)。

的视图状态的主要起点将是一个开始索引,所以你知道在你的数据阵列过滤...,要么可能会或可能不会在你的应用程序或最终指数不变的长度值。

至于滚动,你可以为了后续访问设置.... angular.element(containerElement)[0].scrollTop = service.scrollTop作为一个松散的例子使用滚动事件处理程序的指令与偏移scrollTop的值更新服务对象

还有$anchorScroll服务,您可以通过设置ID在每个项目上使用

这不会给你一个完整的解决方案,但希望能得到你开始

请注意,您将需要考虑它需要通过渲染ng-repeat时间推迟到下一个消化周期在尝试设置scrollTop之前,如果你使用的是

+0

你能否建议一种机制来让听众在主页面保持活跃状态​​(#3要求)? 我感到惊讶的是,我的需求没有直接的缓存解决方案,我们必须编写代码来管理所有这些解决方案。你的回应证实了我并不是疯狂的为自己旋转。谢谢你。 – Nat