2016-01-20 87 views
0

讓我們考慮以下情形:某些數據(採用JSON格式)需要向最終用戶顯示。執行此操作(或至少以我自己的方式)的常用方法是使用角度工廠返回數據,將工廠包含在控制器中,並使用循環語句/ 指令顯示數據。在AngularJS中異步加載數據的正確方法

但是,數據日益增多(從幾十到幾千個),並且一些花哨的動畫被添加到視圖中,導致視圖的加載時間到達天空。

通常,加載數據的方式很多(例如:lazy loading,$q service),但是我不知道哪一個更接近於在異步服務數據中最可靠。

+0

所以你的問題是如何顯示數據,而不是如何加載它,對不對? –

+0

事實上,但我想它需要首先加載,不是嗎? –

+0

你有沒有考慮過分頁? (通過服務器) – tymeJV

回答

1

如果我正確理解你的問題你的問題是,你有一噸要顯示的數據,這可以去錯在兩個地方:

問題1:加載數據

爲了保持加載速度快,你可以用pagination構建一些東西,這會將數據分成更小的頁面以保持加載速度快。

問題2:$$觀察家算

當顯示ng-repeat$$watchers計數可以非常迅速地增加,這將大大放緩,您$digest週期,使您的用戶界面反應遲鈍,爲了克服這一點,你可以使用一些使用virtualization的東西,如UI-grid,這將只呈現屏幕上的數據的一部分,直到滾動爲止,並且使您的視圖之外的所有內容都不呈現。

1

除了Martijn Welker的回答,這裏有幾點可能會幫助你。

1.首先,在加載頁面後總是得到大數據。當你加載頁面時,你可以得到像全局統計數據這樣的小數據(使用解析的東西,但表格中的數據應該總是在頁面加載完成後纔會出現)。在執行此操作時,向用戶提供桌面部分的加載圖標。

2.您是否直接將數據顯示爲JSON給用戶(如JSON文件)?您可以通過增量顯示數據(JSONblob.com所做的一些事情)來改善這一點。它顯示頂級鍵,點擊一個鍵時,它會給出下一級鍵。您的後端也可以設計成您可以針對不同級別和密鑰提供不同的請求。或者你可以有一個像頭:

user > profile > eduction 

,並顯示此鍵值的數據,而用戶的情況下作出的頭clickable.You還可以存儲先前的細節(小數據)想回回來。

3.嘗試使用分頁(後端或前端選擇)。如果您沒有對數據進行任何排序/過濾,您可以使用單向綁定(Angular 1.3+),從列表中刪除手錶。儘管如此,我不知道你需要分頁才能顯示json :)。除此之外,您可以使用plainJs創建此列表。

+0

感謝您的回答! –

+0

高興地幫助:) – Kop4lyf