【问题标题】:AngularJS - Infinte Loop over a finite arrayAngularJS - 有限数组上的无限循环
【发布时间】:2018-04-19 07:49:22
【问题描述】:

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

我想实现什么,但如果它甚至可能是这样的话,我无法完全理解......

屏幕上的“窗口”仅显示 10 条记录 - 完成 您可以向左或向右滚动整个列表 - 完成

但是

我想要实现的是,当到达列表的末尾时,列表会从头开始,但在无限样式循环中。双向

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

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

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

用户体验是无限滚动,但我怀疑浏览器体验可能会因为处理过程而变得缓慢和卡顿

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

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

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

可能是一个从头到尾移动的解决方案,但不确定如何触发此操作或另辟蹊径(拉动?)

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

【问题讨论】:

    标签: arrays angularjs angularjs-ng-repeat


    【解决方案1】:

    反之亦然

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

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

    【讨论】:

    • 啊,unshift..这就是为什么我的流行音乐什么也没做。如果我需要继续前进,我现在拥有双向的机制。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 2013-04-25
    • 2014-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多