2017-07-07 54 views
-1

我从服务器获取5000个用户列表和他们的详细信息,并试图显示这些记录。记录显示,但看到继续加载..和加载后,我无法做任何事情。有没有解决方案来加载5000条记录而不加载和崩溃?如何加载大量数据?

+0

请告诉我们你到目前为止试过了什么! – 31piy

+1

随着用户滚动浏览表,您可以延迟加载数据。如果刚刚显示的数据更好,您也可以使用一次绑定{{:: val}} – user93

回答

1

问题与装载5000条记录http://www.c-sharpcorner.com/article/server-side-pagination-using-angularjs-web-api-and-sql-server/
不(仅)正在接收大量的数据,但Angular必须处理摘要循环中的所有内容。我敢打赌,如果你在浏览器中进行分析,你会发现大部分CPU时间都花在摘要循环中。

为了避免出现这种情况,您一次只能在页面上允许有限数量的DOM元素。正如所建议的,一种做法是使用分页。

另一种方式,你仍然加载你的5000条记录,是使用一个叫虚拟重复/滚动的概念,其中你有一个指令只显示可以放入你的视口中的元素(即在用户屏幕上)和那么无论用户何时滚动,该指令都会在下面添加更多元素,同时删除不在视图中的元素。这可以无缝完成,并可能对性能产生巨大影响。

虚拟重复/滚动可能是您自己创建的困难任务,但幸运的是有几种不同的实现可用。我有Angular Virtual Scroll ngRepeat directive的经验,但也有其他人在那里工作。

1

建议不要一次加载5000条记录,并尝试在浏览器中显示相同的记录。你需要使用分页。您无法将一些沉重的数据加载到浏览器中。它可能会崩溃或不响应。使用分页一次只能提取10/20/30条记录并提供分页按钮,因此用户可以点击并导航到所需的页面。

你如何能做到分页的文章: - - 如果你正在使用的WebAPI

+0

同意。即使一次做100个也不算太坏。还应该考虑使用搜索框来查找或过滤结果。有很多帮助包可以帮助你分页;我倾向于使用引导程序:http://getbootstrap.com/components/#pagination – Porschiey

+1

过滤器在可用性方面是最好的,因为我们没有在单个页面中显示所有内容 – Sujith

+0

我同意但在加载这些记录之后.I想要在一分钟内向他们发送一个常见的味精。所以我需要所有用户来显示 –