2015-04-02 57 views
4

我想以角度呈現表格形式的數據到前端,並且在那裏我已經使用了ng-grid和ui-grid。以角度呈現數據的最佳方式

但他們似乎在減慢性能,因爲有很多行有時會像單個頁面上的每個網格200多個網格和超過20個網格。

因此,大多數時候瀏覽器掛斷我只需要顯示數據不需要對數據執行操作。它只是需要渲染。

因此,如果您有任何其他想法以網格形式呈現這些數據,任何人都可以提供幫助。

+0

請說明實際放緩瀏覽器的情況。 – DTing 2015-04-02 10:39:16

+0

您嘗試過一次數據綁定嗎? {{::數據}}。 – Vikash 2015-04-02 13:47:37

+0

所以你有20個網格,每個有200多行?您必須對此進行分類,在這種情況下您無法獲得良好的性能。 – 2015-04-02 14:03:29

回答

1

在網格行中使用一次綁定。 {{:: data.id}}。這將提高您的頁面性能,因爲在第一次綁定完成後手錶將被移除。

但請記住,如果您更改模型中的任何更改,則在使用一次性綁定時,您無法在視圖中看到它們。

在Angular 1.3中引入了一次性綁定。我使用的是Angular 1.3或更高版本。

如果您使用的版本低於1.3,那麼可能你必須改變你的設計。而不是顯示超過20個網格,根據一些選擇下拉列表,每次只顯示一個網格。

你也可以試試ng-table指令。但是,如果您使用的網格超過200行,即使速度變慢。

如果手錶超過2000個,角度應用會變得緩慢。在您的情況下,有20 * 200 = 4000個手錶。如果你有更多的網格和行,更要注意。所以更好地改變你的設計或使用一次綁定。

+0

嗨@jagadish感謝您的迴應我是一種新的角可以建議一些有關一次綁定refrences? – 2015-04-03 08:17:33

+0

你好@BaljeetBhinder, 請通過這個博客帖子: http://blog.thoughtram.io/angularjs/2014/10/14/exploring-angular-1.3-one-time-bindings.html u能將上述帖子標記爲答案。這樣我就可以給出其他一些問題的答案 – 2015-04-03 15:31:59

+0

如果您在ui-grid中使用一次性綁定,那麼一旦您滾動超出虛擬化閾值,它將無法呈現數據。 DOM元素在您滾動時得到重用 - 所以我們更改特定DOM元素指向的行,並依靠綁定來更新數據。 – PaulL 2015-04-05 06:07:54

1

如何在ui-grid中處理這個問題有幾個選項。

對於flatEntityAccess,在ui-grid中有一個選項,可以提高綁定的性能。

許多人將它們的網格放在選項卡中,並在選項卡周圍使用ng-if,以便只在該選項卡處於活動狀態時才呈現網格。

如果您需要頁面中列表中的所有網格,大概並非所有網格都可以同時顯示給用戶(您不可能有20個網格全部可見,可能只有一個或兩個網格可見你可以檢測頁面滾動,並在網格中使用ng-if,以便只顯示那些實際可見的頁面。

最終問題是如果你有10列,或許有15行可見每個網格,即每個網格150個觀察者,如果你有20個網格,你的網頁上有2000多個觀察者,並且每當你滾動任何一個網格時,都必須對它們進行評估。與可見行的數量,可見列的數量以及與之相關的網格的數量相關重新呈現。如果你希望它變得更快,最終你需要改變其中的一個元素。

最後,您可能需要檢查版本rc20,甚至是當前不穩定的版本比舊版本候選版本更快。

+0

感謝您的回覆@PaulL, flatEntityAccess是否也適用於ng-grid呢?我真的很感謝你的回答,因爲我們滾動頁面感謝那 – 2015-04-06 12:40:01

+0

不,flatEntityAccess是一個3.0的項目,只在最近的發佈候選人(可能不穩定,但也許rc20) – PaulL 2015-04-06 21:31:54

+0

我也在網上看到過某個地方框架,將觀察者從角度觀察者陣列中取出,然後再將其放回。如果您有辦法確定哪些觀察者使用了哪個網格,則可以「停放」與當前滾動操作無關的觀察者。 – PaulL 2015-04-06 21:33:27

相關問題