我有一个包含大量数据的海量数据,并尝试在 AngularJS 的表中显示这些数据(带有过滤和排序)。为此,我尝试使用 ng-Table,但是当数据太多(> 1000 行)时,它在远程服务器上开始变慢,当数据太多(> 5000 行)时,带有该表的页面甚至无法在本地加载机器。据我了解,过滤和排序需要从数据库加载所有数据,可能有人知道一些技巧而不是加载所有数据。或者可能有人知道 Angular 的另一个表格插件。
谢谢你的帮助。
您需要的信息在这里:http ://tech.small-improvements.com/2013/09/10/angularjs-performance-with-large-lists/
建议是:
- 对行进行分页,无论如何他们一次看不到所有 2000 行
- 在没有数据绑定的情况下呈现列表
- 不要使用内联方法调用来计算数据
- 使用两个列表(一个用于显示视图,一个作为数据源)
- 使用 ng-if 而不是 ng-show 来获取其他模板
- 不要使用 AngularJS 指令 ng-mouseenter、ng-mouseleave 等。
- 过滤的调整提示:使用 ng-show 隐藏被排除的元素
- 过滤的调整提示:去抖动输入
您的过滤和排序可能是问题所在,在控制器中应用过滤器并在那里对其进行排序。
最近我开始研究这个新的表格组件#ngTasty,这里有一些示例如何通过客户端分页/排序http://zizzamia.com/ng-tasty/#Table和服务器端分页/排序http://zizzamia 使用它。 com/ng-tasty/#TableServerSide。如果它仍然很慢,我将很乐意解决并提高性能。
为了获得最佳的用户体验和处理大数据,我建议使用无限滚动或分页。
这是一个很好的角度(无限滚动) http://www.michaelbromley.co.uk/blog/108/paginate-almost-anything-in-angularjs
对于分页,一篇好文章 http://www.michaelbromley.co.uk/blog/108/paginate-almost-anything-in-angularjs
试试这些。