AngularJS - 当它到达对象

时间:2016-08-15 02:27:48

标签: javascript html angularjs angularjs-ng-repeat

我重复一个巨大的物体,正在快速研究铬和歌剧。但在像Mozilla和IE这样的浏览器上,它非常慢。我尝试使用分页,它有所帮助,但我想在加载时显示所有项目而不是分页。所以我提出了这个想法,如果可以在执行对象上的最后一项后停止ng-repeat听取对象。

但它不应该删除它呈现的html元素。

如果对象被更改,它应该再次重新运行ng-repeat并停在最后一个项目上。

根据我对ng-repeat的了解,它继续无限循环对象,这可能是IE和Mozilla在对象太大时加载它们的速度慢的原因。

这样可以停止ng-repeat吗?

1 个答案:

答案 0 :(得分:0)

如果您的收藏根本没有变化,则ngRepeat不应该更改DOM。您应仔细剖析,以确保问题符合您的想法。

在文档(https://docs.angularjs.org/api/ng/directive/ngRepeat)中,

  

ngRepeat使用$ watchCollection来检测集合中的更改。当发生更改时,ngRepeat会对DOM进行相应的更改:

     

添加项目时,会将新模板实例添加到DOM中。

     

删除某个项目后,将从DOM中删除其模板实例。

     

当重新排序项目时,它们各自的模板将在DOM中重新排序。

无法阻止这种情况,$watchCollection(我相信)必须遍历您的集合以查看是否有任何重新排序。

在使用ngRepeat时,看起来也不可能“关闭”手表。

如果您不想使用$watchCollection作为检测更改的机制,则可能必须创建自己的脏检查/触发器,并自行生成DOM。