perf(ngRepeat): optimize marking of nodes that are being removed via an animation

This commit is contained in:
Igor Minar
2014-08-10 06:29:17 -07:00
parent 13d113c522
commit 36e35b2cb1

View File

@@ -366,14 +366,18 @@ var ngRepeatDirective = ['$parse', '$animate', function($parse, $animate) {
}
}
// remove existing items
// remove leftover items
for (var blockKey in lastBlockMap) {
block = lastBlockMap[blockKey];
elementsToRemove = getBlockNodes(block.clone);
$animate.leave(elementsToRemove);
forEach(elementsToRemove, function (element) {
element[NG_REMOVED] = true;
});
if (elementsToRemove[0].parent) {
// if the element was not removed yet because of pending animation, mark it as deleted
// so that we can ignore it later
for (index = 0, length = elementsToRemove.length; index < length; index++) {
elementsToRemove[index][NG_REMOVED] = true;
}
}
block.scope.$destroy();
}