4

假设我有一个$scope.items使用ng-repeat. 这个列表相当大并且定期更新,但一次只更新单个项目,例如。第 2 项更新 12 次,第 359 项更新 2 次,第 1071 项更新 89 次,依此类推。

据我了解,更新$scope.items列表中的单个项目将导致 AngularJS 重新呈现完整列表,即使大多数项目根本没有改变。这似乎是一件毫无意义的事情,并且肯定可以以更有效的方式处理。我可以使用 jquery 之类的工具并自己更新 DOM,但这似乎在很大程度上违背了 AngularJS 的观点。AngularJS 中是否有任何方法可以更新ng-repeat生成模型中的单个列表元素?

4

2 回答 2

2

对于像我一样登陆这个话题的人。查看 ngRepeat 指令的“track by”增强。

http://www.bennadel.com/blog/2556-using-track-by-with-ngrepeat-in-angularjs-1-2.htm https://docs.angularjs.org/api/ng/directive/ngRepeat

干杯

于 2014-06-02T19:24:36.237 回答
2

这取决于您如何设置绑定和更新。如果您有一个大列表,请进行更新,发送到服务器并将整个列表替换为服务器的返回,是的,您将重新渲染。但是,如果您只是更新需要更新的一条信息,将那条原子信息发送到服务器,则没有理由重新渲染整个数据集。

如果您担心或真的想一次在屏幕上显示 10,000 个项目,请为行设置查看模式和编辑模式。您可以使用单向绑定 ( https://github.com/abourget/abourget-angular ) 呈现只读版本,并在编辑模式下显示具有双向绑定的表单。这将显着增加您在任何给定时间可以在屏幕上显示的项目数量,同时仍允许您编辑每个项目。

于 2013-03-10T16:06:30.980 回答