AngularJS 无限滚动大量数据

2024-05-23

所以我尝试使用 AngularJS 创建一个无限滚动表,类似于:http://jsfiddle.net/vojtajina/U7Bz9/ http://jsfiddle.net/vojtajina/U7Bz9/

我遇到的问题是,在 jsfiddle 示例中,如果我继续滚动直到有一百万个结果,浏览器就会慢得像爬行一样,不是吗?因为现在会有1,000,000结果为 $scope.items。例如,如果我只拥有过,那就更好了1000$scope.items 内一次的结果,而我正在查看的结果恰好在这些范围内1000.

示例用例:页面加载,我看到第一个10结果(出自1,000,000)。虽然我只看到10, 首先1000结果实际上已加载。然后我滚动到列表的最底部查看最后一个10项目。如果我再次滚动回到顶部,我希望顶部10必须从服务器再次加载结果。

我有一个用 ExtJS 做的项目,有类似的情况:一个无限滚动列表,其中有几千个结果。 ExtJS 处理此问题的方法是加载当前结果页面,然后预加载几页额外的结果页面。但无论何时,都只有10本地存储的结果页面。

所以我想我的问题是我将如何在 AngularJS 中实现这个?我知道我没有提供太多代码,所以我不期望人们只给出编码答案,但至少会给出一些方向的建议。


有几件事:

  1. 无论框架如何,“无限滚动”到“1,000,000”行都可能会出现问题,因为您已经创建了数百万个 DOM 节点(假设每条记录中有多个元素)

  2. 您正在考虑使用的实现<li ng-repeat="item in items">{{item.foo}}</li>或者类似的事情都会有问题very之所以这么快,有一个重要原因:{{item.foo}}}或任何类似的 ngBind 将设置一个$watch在该字段上,这会以函数引用等形式产生大量开销。因此,虽然“数组”中的 10,000 个小对象不会那么糟糕......每个对象都有 10,000-20,000 个额外的函数引用10,000 件物品将是。

在这种情况下,您想要做的是创建一个指令来处理添加和删除“太远”超出视图的 DOM 元素,并保持数据最新。这应该可以缓解您可能遇到的大多数性能问题。

...我很遗憾地说,良好的无限滚动并不简单。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AngularJS 无限滚动大量数据 的相关文章

  • JavaScript 中的“new”关键字是什么?

    The newJavaScript 中的关键字第一次遇到时可能会很混乱 因为人们倾向于认为 JavaScript 不是面向对象的编程语言 它是什么 它解决什么问题 什么时候合适 什么时候不合适 它做了 5 件事 它创建一个新对象 这个对象的
  • 使用 npm 作为构建工具连接文件

    我最近发现我可以使用 npm 作为任务运行程序 而不是 gulp 或 grunt 到目前为止 一切都很棒 lint stylus jade uglify watch 等 但串联部分 我似乎无法实现 gulp 是这样的 gulp task s
  • 无法填充名为“status”的数组

    我正在尝试做一些非常简单的事情 在 Javascript 中初始化一个数组 而且它在 Google Chrome 中不起作用 这是代码 status for i 0 i lt 8 i status i false alert status
  • jQuery UI sortable 和 contenteditable=true 不能一起工作

    我正在创建一个列表并希望使其项目可排序和可编辑 所以我这样做 ul li span A span li li span B span li li span C span li ul ul list sortable http jsfiddl
  • 使用 requirejs 加载外部脚本而无需访问配置

    我正在尝试在我正在编写的插件中加载数据表 javascript 库 问题是 当我加载外部资源时 我会遇到冲突 因为当我调用 require 时 数据表与某些内容发生冲突 这是错
  • 如何在提交表单之前删除自动数字格式?

    我正在使用 jQuery 插件自动数字 http www decorplanit com plugin 但是当我提交表单时 我无法删除之前字段上的格式POST 我尝试使用 input autonumeric destroy 和其他方法 但它
  • 卸载/销毁 Angular 延迟加载组件

    我的设置与此处找到的帖子类似http ify io lazy loading in angularjs http ify io lazy loading in angularjs 处理 Angular 中我的应用程序的各种组件的延迟加载 我
  • 光滑的旋转木马不工作

    我一直在尝试简单地实现 Slick Carousel 的工作 我已按照 Git 页面上的说明进行操作 https github com kenwheeler slick https github com kenwheeler slick 这
  • 更新 Google 地图流量层而无需重新加载页面

    我的页面中嵌入了 Google 地图 我使用 initMap js 函数来初始化地图 function initMap var map new google maps Map document getElementById t map zo
  • EJS在JS onload函数中访问express变量

    我知道你可以像这样获取 ejs 文件中变量的值 h1 h1 如果我要在同一个 ejs 页面的 onload javascript 函数中使用相同的标题变量 我将如何使用它 例如 这个函数产生一个控制台错误说 未捕获的语法错误 意外的标识符
  • 在 HTML5 中将两个图像合并到一个画布上

    我正在使用 HTML5 canvas 元素 假设我有 2 个 ImageData 对象 我想将它们组合起来放在一张画布上 假设我不关心这些图像如何组合 两个 ImageData 对象具有完全相同的像素数和形状 组合两个图像的最佳方式是什么
  • 带时间戳的 Firestore 查询

    如果它是文本字段 我可以使用 where 条件获取数据 但是当我尝试对时间戳字段和日期执行相同操作时 事情不起作用 这是我的代码 home ts firebase firestore collection cities where time
  • ReferenceError 和全局对象

    在浏览器中的 JavaScript 中window是全局对象 这意味着在全局范围内定义的每个变量都是window 那么为什么我会得到这个结果 console log window foo No error logs undefined co
  • 显示班级图片 10 秒

    我有下面给出的代码显示9 boxes 其值如下digital time 还有一个班级box002显示digits相当于随机选择的九个盒子的值 box002 can be dragged to digital time starting wi
  • 如何在 JavaScript 中对关联数组进行排序?

    我需要为我的一个项目通过 JS 对关联数组进行排序 我发现这个函数在 Firefox 中运行得很好 但不幸的是它在 IE8 OPERA CHROME 中不起作用 无法找到使其在其他浏览器中运行的方法 或者找到另一个适合该目的的函数 我真的很
  • 父指令属性更改时子指令不会更新

    这是对这两个问题的后续 在父指令和子指令之间传递参数 https stackoverflow com questions 42814530 pass argument between parent and child directives
  • Javascript:更改输入值时设置光标位置

    当您输入公式时 我试图在我的应用程序中重现类似于 Microsoft Excel Google Sheets 的用户体验 并且您可以使用不同的公式和变量来自动完成下拉菜单 为此 在验证自动完成功能后 我希望能够控制光标的位置 例如 如果我输
  • 数字和小数的输入掩码

    在测试我的程序后 我发现了以下错误 我在 sqlserver 中的表包含 价格数字 6 2 我的程序的用户输入价格 555 00 就很好了 但是当他输入 555555 时 这是错误的 所以我需要指定掩码 其中尾数是可选的 0 到 999 小
  • 使用 JavaScript onclick 添加表格行

    我正在尝试使用 javascript 添加下面找到的完全相同的元素 我已经尝试了这里找到的所有解决方案 我什至尝试用php echo但没有运气 无需更改任何输入名称或类似内容 只需单击该按钮即可向表中添加另一行 仅此而已 这是该元素 tr
  • 使用 JQuery 预填充选择字段的下拉选项验证

    我有这个 JQuery 片段来防止选择已在另一个字段中选择的下拉选项 var coll select name service on change function coll each function var val this value

随机推荐

  • MvxTabsFragment 无法为绑定命令创建目标绑定

    我正在尝试创建一个MvxTabsFragmentActivity并将片段上的按钮绑定到命令 我遇到的问题是以下错误 MvxBind Warning 7 94 Failed to create target binding for bindi
  • 如何知道两个 NSDate 是否在同一天

    你知道如何知道两个NSDate是同一天 我想考虑到区域设置 使用a可能很容易timeIntervalSinceDate 但星期一 23H58 和星期二 00H01 不在同一天 处理NSDate和计算区域设置不是很容易 NSCalendar
  • 当调用dll函数时,参数对象的成员变量的内存地址发生变化

    类某类 一些成员MemberClass one of the mem 我有一个函数foo SomeClass object 在 dll 中 它是从 exe 调用的 Problem 地址one of the mem 在调度 dll 调用期间发
  • Flexbox 调整大小和可滚动溢出[重复]

    这个问题在这里已经有答案了 我有正在调整大小的内容 并且我想要一个固定标题 该标题不会增大 缩小 并且不属于可滚动内容的一部分 如果空间不足 下面的内容将变得可滚动 内容外包装 flexGrowWrapper has a flex grow
  • Flash - HTTP 请求在本地主机上不起作用

    首先 我试图修复一些我一开始就没有构建的东西 项目负责人向我保证 当他离开时 它工作得很好 尽管自从他离开后我从未接触过的版本似乎已经同样的问题 一般来说 我对编程也有点陌生 所以如果我在第一篇文章中遗漏了重要信息 请告诉我 我会尝试添加更
  • jquery comet 长轮询和流媒体教程? [复制]

    这个问题在这里已经有答案了 可能的重复 彗星和 jQuery https stackoverflow com questions 136012 comet and jquery 我厌倦了找不到关于 jquery 长轮询 流彗星技术的好的教程
  • “EXC_BAD_ACCESS”与“分段错误”。两者实际上相同吗?

    在我的前几个虚拟应用程序 用于学习时练习 中 我遇到了很多EXC BAD ACCESS 这以某种方式告诉我错误访问是 您正在触摸 访问一个不应该的对象 因为它尚未分配或释放 或者只是您无权访问它 查看此示例代码 该代码存在访问错误问题 因为
  • 为什么 Google Guice 依赖注入框架有两个单例实例

    我的应用程序中有 2 个 Singleton 实例 都是由 Google Guice 创建的 这怎么可能 绑定完成如下 bind Foo class to FooImpl class in Scopes SINGLETON 这里的问题是绑定
  • 根据单元格值返回图像(100 张图像和可变单元格)

    我正在尝试为我制作一个 TFT 云顶之弈 表 并想让它看起来更好 为此 我想添加游戏中冠军的图像 当我输入名称时 图像应该出现在下面 我找到了一种将所有图像插入 Excel 工作表 100 的方法 并且还成功制作了一个动态图像 插入 IND
  • Android主线程的IO操作

    我的问题有两个 是否建议在 Android 的主线程上进行 IO 操作 或者它是否有可能导致我的应用程序崩溃 如果在主线程上执行 IO 操作不理想 我可以使用哪些其他框架 以便当我的应用程序加载时它可以执行一些基本的 IO 文件读取并将值存
  • System.Reactive:基于时间戳字段的基于时间的缓冲区

    我在 C 项目中使用 Reactive 库根据配置的策略对数据进行分组 所有这些数据都实现了以下接口 public interface IPoint object Value get DateTimeOffset Timestamp get
  • 如何使用timeval结构计算毫秒?

    我想从 timeval 类型的变量中检索以毫秒为单位的值 以下是我的尝试 timeval time long int millis time gt tv sec 1000 time gt tv usec 1000 printf Second
  • 如何在 Eclipse 中引用不同的 Java 项目

    我有项目1和项目2 Project1 依赖于 Project2 我有点厌倦了 每次在 Project2 中进行一些代码更改时 我都必须导出 Project2 JAR 文件 并将其复制到 Project1 的 lib 文件夹中 有没有办法自动
  • 如何在 Jenkins 中设置发件人地址?

    我正在将邮件从 Jenkins 发送到内部匿名 SMTP 中继 然后 该中继通过端口 587 上的 TLS 安全地发送邮件进行在线交换 传输工作正常 问题是 Microsoft 要求发件人地址与身份验证凭据登录名匹配 该登录名与帐户电子邮件
  • 将多个函数应用于一个向量

    我正在寻找一种将多个函数应用于一个向量的选项 我认为这对于逆应用函数来说是一种仁慈 其中一个函数应用于许多向量 或列 有没有办法指定两个或多个函数 例如 min 和 max 并将其应用于向量 与 CathG的评论类似 但没有get v lt
  • 使用 Maven 进行 Coldfusion 项目

    我必须处理相当丑陋且大量的 ColdFusion 代码 到目前为止 这些代码都是通过在生产服务器上直接修改来维护的 不要问 我设法清除它的重复和备份并将其放入 Subversion 现在我需要选择一个 make 系统以便能够将其放入持续构建
  • 自动映射器 UseDestinationValue 不起作用

    目前正在努力解决同一类之间自动映射器的设置 问题是我需要在调用之前使用 NHibernate 从数据库获取实体SaveOrUpdate 然后我将替换所有属性 除了Id and LocationId Mapper public Domain
  • html2canvas 向下移动文本

    我正在尝试转换 div 使用 html2canvas 到图像 然而 有一个问题 里面的文字 div 中用红圈标出的Figure 1没有填充或任何类型的偏移引入参数 但是当转换为图像时 文本上方有一个错误间隙 如中的红色圆圈所示Figure
  • 玩!框架:如何从“slugify()”网址查找项目?

    play 框架在视图中有一个功能 可以通过以下方式创建 SEO 友好的 URL slugify 功能 似乎没有 unslugify 功能 那么如何从slugify参数中查找模型呢 例如 如果我有一个博客模型 其标题属性设置为 hello w
  • AngularJS 无限滚动大量数据

    所以我尝试使用 AngularJS 创建一个无限滚动表 类似于 http jsfiddle net vojtajina U7Bz9 http jsfiddle net vojtajina U7Bz9 我遇到的问题是 在 jsfiddle 示