2015-09-14 52 views
2

我正在为我的公司开发一个角度应用程序,但是我已经达到了应用程序变得非常缓慢的程度,所以我尝试通过使用onetimeind来调整它,我可以跟踪...但是它首先加载更快但仍然是滞后的,它由一个非常巨大的嵌套对象组成,我已经计算了对象的总数,它从680开始,并且可以高达+6000用于应用程序的正常使用,噢,我应该精确地说明应用程序正在生成一个表单,并且范围内的所有对象的90%都属于输入,并且每次客户端单击(无线电)键控/更改(文本)时都会更新。如何加速AngularJS渲染大范围?

它也有像对象组成的5/6数组,并且数组根据客户端的选择变得更大/更小,这就是它滞后的地方,每次我向数组中添加一个对象时,都会花费一秒所以我尝试使用嵌套控制器,认为如果更新对象的孩子Angular将只呈现这个孩子,而不是所有其他人,但不知何故应用程序变得更慢和更迟钝:s(当我使用ng-show代替ng-if但使用的内存从〜50Mb跳到〜150Mb)

我也应该精确地知道表单是向导样式的,并不是所有的输入都一次显示,显示的输入在总输入的10%-20%之间

以前有人遇到过这个问题吗?有谁知道如何处理大范围?

+1

“如何应对大范围” - 他们分成嵌套元素(控制器,带隔离范围指令等) – ivamax9

+0

由于2路数据绑定角,如果你有1000年代观察变化的对象会减慢速度。 – scunliffe

+0

做所有的项目需要双向绑定,还是只需要渲染一次?有一些技巧 – Jorg

回答

1

很遗憾地说,但这是角度渲染视图的内在。 模型中的更新会触发整个视图的潜在重绘。不管你是否隐藏了元素。双向数据绑定可以真正杀死表演。你可以考虑评估你是否需要渲染视图一次,在这种情况下有优化,但我假设你的表单动态变化,因此2路数据绑定是必要的。

您可以尝试解决此限制,但封装整个MVC的子部分。通过这种方式,包含的控制器只会更新与该范围关联的特定视图。

你可能要考虑使用的反应(即具有作为第一目标就是为了解决你的使用情况)

看一看这个博客帖子角之间的渲染管线的比较和作出反应的js。

http://www.williambrownstreet.net/blog/2014/04/faster-angularjs-rendering-angularjs-and-reactjs/