假设我有一个对象数组,并且每个对象都有唯一的ID和文本属性。
现在,我们说我有ng-repeat
喜欢这个:
控制器
$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;
)分配了一个全新的数组,如果这个新数组的内容是什么会发生什么:
AngularJS是否足够聪明:
div
元素div
元素附加/插入DOM div
答案 0 :(得分:1)
由于您使用track by elem.id
,Angular将重用DOM元素。它只会向文档树添加或删除一个元素。每the docs:
如果您稍后重新加载数据,
ngRepeat
将不必为已呈现的项重建DOM元素,即使集合中的JavaScript对象已替换为新对象。