2015-09-14 78 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/