Angularjs 将新数据追加到数组时,ng是否重复重新创建所有子DOM元素?

Angularjs 将新数据追加到数组时,ng是否重复重新创建所有子DOM元素?,angularjs,angularjs-directive,Angularjs,Angularjs Directive,我创建了一个指令,在用户向下滚动时处理无限量的博客文章加载 我想知道当feed使用ng repeat呈现时,AngularJS如何处理新博客文章的添加 比如说 <article ng-repeat="post in posts"> // stuff... </article> //东西。。。 是否每次帖子更新新帖子时都会重新创建所有文章?假设只有新的帖子被附加到数组中 ng repeat是否足够聪明,只创建新帖子 我担心用户向下滚动很长一段时间后,刷新

我创建了一个指令,在用户向下滚动时处理无限量的博客文章加载

我想知道当feed使用ng repeat呈现时,AngularJS如何处理新博客文章的添加

比如说

<article ng-repeat="post in posts">
       // stuff...
</article>

//东西。。。
是否每次
帖子
更新新帖子时都会重新创建所有文章?假设只有新的帖子被附加到数组中

ng repeat是否足够聪明,只创建新帖子


我担心用户向下滚动很长一段时间后,刷新速度会变慢,因为每次从服务器获取新博客时,ng repeat都会重新创建所有博客。

ng repeat默认情况下,通过其
$id()
:angular将一个标识与每个项目关联,如果向集合中添加节点,则不会重新创建已与集合的现有项关联的元素


OTOH,如果您的策略是在每次向下滚动时重新创建一个新的项目集合,那么新项目将具有不同的标识(即使它们与以前表示相同的帖子),angular将重新创建所有DOM元素。这就是
trackby
的作用:它允许告诉ng repeat如何将DOM元素与集合的项相关联。例如,您可以使用
按id跟踪
,以前与id为3的项关联的元素将通过ng repeat保留,并与id为3的新项关联。

是的,它缓存dom元素,不会重新创建已经存在的元素。ng repeat的性能实际上只取决于你在它里面做什么。(数据绑定中有多少项等)+1谢谢,很高兴知道。我看到这些ID被添加到调试器中的项中,现在它们的用途变得有意义了。