Misko已经很好地描述了数据绑定的工作原理,但我想补充一下我对数据绑定性能问题的看法。
正如Misko所说,大约2000个绑定是你开始看到问题的地方,但无论如何,你不应该在一个页面上有超过2000条信息。这可能是真的,但并非每个数据绑定对用户都可见。一旦你开始构建任何类型的小部件或数据网格与双向绑定,你可以很容易地达到2000个绑定,而不会有一个糟糕的UX。
例如,考虑一个组合框,您可以在其中键入文本以筛选可用选项。这种控件可能具有大约 150 个项目,并且仍然具有高可用性。如果它具有一些额外的功能(例如当前所选选项上的特定类),则每个选项开始获得3-5个绑定。将其中三个小部件放在一个页面上(例如,一个用于选择国家/地区,另一个用于选择所述国家/地区的城市,第三个用于选择酒店),您已经在1000到2000个绑定之间。
或者考虑企业 Web 应用程序中的数据网格。每页 50 行并非不合理,每行可以有 10-20 列。如果您使用ng-repeats构建它,并且/或者在某些使用某些绑定的单元格中具有信息,则仅使用此网格就可以接近2000个绑定。
在使用AngularJS时,我发现这是一个巨大的问题,到目前为止,我能找到的唯一解决方案是在不使用双向绑定的情况下构建小部件,而不是使用ngOnce,取消注册观察程序和类似的技巧,或者构建使用jQuery和DOM操作构建DOM的指令。我觉得这违背了首先使用Angular的目的。
我很想听听关于其他处理这个问题的方法的建议,但也许我应该写我自己的问题。我想把它放在评论中,但事实证明它太长了......
TL;DR
数据绑定可能会导致复杂页面上的性能问题。