Angular一次性绑定替代方案

时间:2015-03-21 15:57:16

标签: javascript angularjs data-binding

最近,我走过了几个与AngularJS优化技术相关的StackOverflow问题:

AngularJS really slow at rendering with about 2000 elements?

How does data binding work in AngularJS?

大多数答案都提出了一种称为One-time binding的优化技术,但是我的用例表明我不能使用这种方法,我的所有数据都是交互式的,更改是从服务器推送到客户端,再加上需要显示相当多的数据。当服务器通知发生时,需要UI更新。因此,如果我使用一次性绑定,它将破坏我的页面。

我试图分析在我的情况下使AngularJS变慢的原因,并且我发现不是脏检查本身正在减慢过程。现代的javascript引擎能够在几毫秒内检查数万个对象属性。使AngularJS变慢的根本原因是$watch表达式本身,每个$watch调用都会使用setTimeout调用以及一些AngularJS内部开销进行备份。主要问题是这些调用将控制传递给浏览器的内部消息循环,从程序的角度来看,除了在数据显示过程的每个步骤中都有延迟之外什么都不做。

所以我的问题如下:与一次性绑定相反,我希望有一种方法可以将我的单向绑定表达式{{ someObj.someProperty }}分组到一个$watch调用中,类似于

{{ myBulkWatch::someObj.someProperty1 }}
{{ myBulkWatch::someObj.someProperty2 }}
...
{{ myBulkWatch::someObj.somePropertyN }}

我知道目前还没有这样的功能,但也许至少可以用现有的Angular乐器来模拟这个功能?

关于这个问题的任何想法?

提前谢谢!

0 个答案:

没有答案