AngularJS - 有限数组的无限循环

AngularJS - Infinte Loop over a finite array

我有一个列表,其中包含 10-500 条记录,使用标准 NG-REPEAT 以图形数组的形式出现在屏幕上,可视化是一排照片

我想要实现的目标,但如果可能的话,我还是无法完全理解......

A 'window' 在屏幕上只会显示 10 条记录 - 完成 您可以向左或向右滚动浏览整个列表 - 完成

然而

我想要实现的是,当到达列表末尾时,列表会从头开始重新开始,但会以无限循环的形式出现。两个方向

我从来没有做过这样的事情,也不太确定如何实现我的 ng-repeat(ListofItems 中的项目)

所以我认为最好的解决方案是

当用户通过 100 条记录得到 40 条记录时,我将我的 $scope.ListofItems 中的前 20 条记录推入()到数组的末尾,并从前面删除等效的前 20 条记录。这保持了 100 条记录的恒定列表,没有大量内存使用..我什至可以在单个记录的基础上执行此操作..从末尾或开头删除一条记录并添加到列表的开头或结尾。

用户体验是无限滚动,但我怀疑由于正在进行的处理,浏览器体验可能会很慢且卡顿

Push()、Pull()、跟踪和索引会发挥作用,但任何建议在技术上是否可行都将不胜感激

编辑:经过一些研究。也许

$scope.ListofItems.push($scope.ListofItems.shift());

可能是一个从头到尾移动的解决方案,但不确定如何触发它或走另一条路(拉?)

EDIT2:刚刚为上面做了一个手动调用的函数,它将前面的项目移到列表的末尾,尽管我不知道如何读取屏幕位置来知道何时触发该函数

反过来可能是

$scope.ListofItems.unshift($scope.ListofItems.pop());

作为旁注,我认为重要的是要记住大型数组 shift()unshift() 自然会导致完全重新索引并且时间复杂度为 O(n) 其中 n是数组的长度,与时间复杂度为 O(1)

push()pop() 相反