2013-05-17 27 views
1

我們有一個數據綁定表,它是從一組對象中動態構建的。有2個循環,一個用於列,另一個用於行。根據數據類型,每個單元格都有一些格式化過濾器。沒有分頁,頁面很快就會下降到大約600個記錄左右。鉻是好的,但IE不是。我沒有刪除過濾器等,但它沒有造成巨大的差異。De-Angularize一個龐大的數據綁定表

我認爲綁定的角度性質會降低它的速度。有沒有辦法做一個單向綁定/模板,沒有正常綁定附帶的額外開銷?與Handlebars類似的東西?我可以寫一個指令來照顧它,但是如果可能的話,想使用內建的東西。

額外注:我不認爲我必須使用一些其他的預建數據網格,因爲我們有我們自己的外觀和在應用感受,我寧可不要試圖自定義以適應選項

+0

有沒有內置的機制做這種綁定,我不知道我看到價值;如果沒有綁定,你會如何對數據表做出反應?我認爲你必須使用一些骯髒的黑客。你可以使用指令,是的,但我認爲你應該找出是什麼放慢你的代碼;在現代瀏覽器中,AngularJS應該可以支持數千個綁定。此外,您可能需要重新考慮一次顯示數百行 - 這對於人類用戶不再有幫助。 –

+0

我們確實不需要網格內的交互。如此簡單的模板合併就可以做到。此外,我們確實有每頁50個記錄的分頁。這不是一個真正的問題。我只是好奇,以防我們每頁顯示200個或更多的記錄。鉻是確定的,但IE8真的開始減慢200 X 20格。 – Ketan

+0

嗯,我不能說IE ...幸運的是。 :-)一個指令是最好的方法,但是當你沒有數據綁定時會有*噸*警告。從模板創建新的HTML正是指令的目的。綁定就是這樣 - 它們將事物綁定在一起。你可以編寫你自己的高度簡化版的ngRepeat來做你想做的事情,但是由於我提到的警告,我不確定這種類型的通用指令是否可行 - 所以它需要是一項自定義工作。 –

回答

1

爲了回答我自己的問題,我找到了各種困難的幾個選項。

Pasquale Vazzana寫了一個名爲bind-once的優秀指令,它不會將任何監視保留在綁定中,從而減少開銷。

https://github.com/Pasvaz/bindonce

這應該爲小工作,中型表(< 5000個細胞)。

在較大的表上,虛擬化(無限滾動/虛擬滾動等)是要走的路。

的Jquery EasyUI提供了一個虛擬滾動選項 http://www.jeasyui.com/demo/main/index.php?plugin=DataGrid&theme=default&dir=ltr&pitem=

希望這可以幫助別人在同一條船上一個DataGrid。