2013-03-10 34 views
4

讓我們假設我有一個使用ng-repeat$scope.items呈現的項目列表。此列表相當大,並定期更新,但一次只更新單個項目,例如。 12更新項目2,然後2更新項目359,然後89更新項目1071等。很高效地使用AngularJS和ng-repeat更新列表

據我所知,更新$scope.items列表中的單個項目將導致AngularJS重新列出完整列表,即使大多數項目根本沒有改變。這似乎是一件毫無意義的事情,並且可以以更有效的方式處理。我可以使用像jquery這樣的工具並自己更新DOM,但這似乎大大地挫敗了AngularJS的重要性。 AngularJS有什麼方法可以更新ng-repeat生成的模型中的單個列表元素?

+0

理論問題或性能有關? – charlietfl 2013-03-10 13:54:10

+0

理論問題和可擴展性相關。 – user2035365 2013-03-10 14:01:23

+0

不確定是什麼問題。這裏有'ng-repeat'中的3000個項目,它們在沒有問題的情況下實時更新。 http://jsfiddle.net/5MKY6/我認爲你已經過分簡化了角度的能力 – charlietfl 2013-03-10 14:18:33

回答

2

這將取決於您如何設置綁定和更新。如果你有一個大的列表,做一個更新,發送到服務器,並用服務器返回來替換整個列表,是的,你將重新渲染。但是,如果您只是更新需要更新的一條信息,請將該原子信息發送給服務器,沒有理由重新呈現整個數據集。

如果您擔心或真的想要一次在屏幕上放置10,000個項目,請爲這些行設置查看模式和編輯模式。您可以使用單向綁定(https://github.com/abourget/abourget-angular)來呈現只讀版本,並且在編輯模式下時,使用雙向綁定顯示錶單。這將顯着增加您可以在任何給定時間在屏幕上顯示的項目數量,同時仍然允許您編輯每個項目。