AngularJS 1.6 - ng-repeattrack by - 仍然有意义吗?



在 Angular 1.6 中,ng-repeattrack by仍然有意义吗?这是绩效的好习惯吗?

如果数组中的每个对象都具有唯一标识符属性,则应将该属性用于track by部分。例如:

$scope.items = [
{id: 1, name: "some name"},
{id: 2, name: "some name"}
];

您的 ng 重复将如下所示:

ng-repeat="item in items track by item.id"

如 AngularJS 文档中所述:

最佳实践:如果您正在使用具有唯一标识符属性的对象,则应按此标识符而不是对象实例进行跟踪,例如,按 item.id 跟踪的项中的项。如果您稍后重新加载数据,ngRepeat 将不必为已经呈现的项目重新构建 DOM 元素,即使集合中的 JavaScript 对象已被替换为新对象。对于大型集合,这可显著提高呈现性能。

但是,如果您的阵列看起来像这样,则可能存在欺骗:

$scope.items = [
{name: "name1"},
{name: "name1"},
{name: "name2"},
];

您的 ng 重复将如下所示:

ng-repeat="item in items track by $index"

在此小提琴中,您可以检查使用或不使用的性能影响track by.

小提琴的来源

最新更新