javascript - 使用动态生成的数据数组进行 ng-repeat 的性能

标签 javascript arrays angularjs

假设我有一个对象数组,每个对象都有一个唯一的 ID 和一个文本属性。

现在,假设我有一个像这样的 ng-repeat:

Controller

$scope.data = my_arr;

查看

<div ng-repeat="for elem in data track by elem.id">
    {{ elem.text }}
</div>

关于 track by 的特别说明。

如果我将一个全新的数组分配给 data 变量 ($scope.data = new_arr;) 会发生什么,如果这个新数组的内容:

  • 与上一个完全相同
  • 它包含 1 个新元素
  • 它包含除 1 之外的所有元素

AngularJS 是否足够聪明:

  • 不重新渲染所有 div 元素
  • 仅将新的 div 元素追加/插入到 DOM
  • 仅隐藏/删除新数组中未包含的 div

最佳答案

由于您正在使用 track by elem.id,Angular 将重用 DOM 元素。它只会向文档树添加或删除一个元素。每the docs :

Should you reload your data later, ngRepeat will not have to rebuild the DOM elements for items it has already rendered, even if the JavaScript objects in the collection have been substituted for new ones.

关于javascript - 使用动态生成的数据数组进行 ng-repeat 的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35243780/

相关文章:

Javascript 按等级列表对数组进行排序

javascript - 使用Jquery创建带有转义文本+ HTML的元素

javascript - 是否存在一种方法来检查可观察对象是热的还是冷的?

Javascript - 数组覆盖

javascript - 单击按钮时获取单选按钮值不起作用angularjs

javascript - Angular UI Modal 2方式绑定(bind)不起作用

javascript - 数据表日期排序(DD.MM.YYYY.)格式

php - 如何使用PHP从字符串中删除一些字符

JavaScript - 使用数组检查字符串

javascript - 错误 : $injector:unpr Unknown Provider on a controller in Angularjs 1. 5