如何在angularjs中提高ng-repeat的大数据列表多重过滤器的速度
how to improve speed of multiple filter on ng-repeat with a large data list in angularjs
我有一个大数据列表(超过200行)。并且每行有7,8列,所有这些都来自REST API(它花了5,6秒)。
在Angularjs控制器中:
$http.get(path).then(function (resp) {
$scope.listOfData= resp.data;
});
在Html页面:
<table>
<tr class="header">
<th>id</th>
<th>Name</th>
<th>status</th>
<th>mobile</th>
<th>Gender</th>
<th>location</th>
</tr>
<tr ng-repeat="data in listOfData |orderBy: id | filter:folder | filter:status.value | filter:xyz | filter:abc">
<th>{{data.id}}</th>
<th>{{data.name}}</th>
<th>{{data.status}}</th>
<th>{{data.mobile}}</th>
<th>{{data.gender}}</th>
<th>{{data.location}}</th>
</tr>
</table>
对于ng-repeat,我使用了多个过滤器(所有过滤器都来自select标签)。
所有这些代码都运行良好。但是当我通过ng-repeat迭代数据列表时,需要15-20秒才能加载完整的数据。
我的第一个问题是,如何减少ng-repeat的加载时间?
第二个问题是,当我过滤数据工作良好,但它需要一些时间来过滤(一些时间,屏幕挂起3,4秒)。
所以你能告诉我我在哪里做错了,以及如何修复它,所以我的页面会加载更快,多个过滤器将更容易和更快地执行?
Thank you so much
您可以做以下几件事来提高性能:
-
限制显示的项目数量。将其限制为显示的项目数量较少(50)。如果你需要显示更多的项目,在底部添加一个显示更多的按钮,这会增加限制。
<table> ... <tr ng-repeat="data in listOfData |orderBy: id | filter:folder | filter:status.value | filter:xyz | filter:abc | limitTo: maxLimit"> ... </tr> </table> <a ng-click="maxLimit = maxLimit + 50">Show More...</a>
-
单向绑定-正如Ganesh指出的,如果你的数据没有改变,那么使用单向绑定代替:
<th>{{::data.id}}</th>
- 要求输入在数据列表中
- 使用JavaScript在IE9中获取数据列表选项
- 使用AJAX创建数据列表
- 从要使用Protractor测试的服务器异步加载的动态数据列表的列表
- 为什么数据列表选项的id返回空值
- 如何调用更改事件,例如在 HTML 数据列表上选择
- 在 d3 中为数据列表创建元素
- asp.net 数据列表中的跟踪标签 ID
- 通过遍历JSON文件来填充数据列表选项
- PHP:从数据列表中打印(循环困难)
- 无法获取数据列表中项目的值
- 从不同页面收集数据以形成数据列表,并将它们一起发送
- 检查给定的数据列表中是否存在表单字段值
- Jquery调用数据列表选项卡或输入
- 按调用顺序返回由Ajax/HTTP生成的数据列表
- 如何根据输入值可靠地计算数据列表中的匹配数
- 如何在angularJs中使用数据列表
- 如何检测从数据列表中选择时更改的输入字段
- 将文件转换为数组并使用数据列表和选项标签为自动完成文本框添加数组元素
- Zend Form 1.x使用html5数据列表标签