2016-09-23 23 views
0

我想知道在腳本的每次AJAX下載之後是否有影響this.$scope.$digest();。我正在使用SignalR從服務器獲取數據。數據一進入,我就想將數據繪製到網格中。雖然我在控制器js中的功能在眼睛的眨眼間執行,但對UI的繪畫需要大約3到4秒,這是不可接受的。

Angular Batarang表示6.8毫秒和1542個觀察者。

如何優化頁面?

+1

是否瓶頸可能只是太多的物品一次畫?您是否嘗試過使用'limitTo'指令或其他方式進行本地分頁? – o4ohel

+0

是的。我也應用limitTo。 –

回答

2

您的問題有兩種可能的原因。您要麼經常檢索數據,並且每次收到數據時都要重新繪製數據。或者,您正在檢索大量數據並試圖更新您的視圖中非常大的控件。這裏是你如何解決這些問題,既:

  1. 數據檢索比更新速度

更快爲此,您需要創建檢索到的數據和$scope數據之間的緩衝。基本上,無論何時您接收到新數據,您都應該將更改推送到不在範圍內的數據結構。通過這種方式,您可以儘可能快地獲取數據,並且不會影響渲染。然後,您需要啓發式方法來決定何時重新繪製數據。這可能基於計時器,或者在數據更改後發生。一旦此條件成立,您將數據更改複製到您的$scope對象,該對象將更新視圖。

- receive data -> write to non scope buffer 
- when some condition is met -> write buffer or buffer changes to $scope 
  • 檢索的數據是大的,並查看是大而複雜的
  • 對於這種情況,只能選擇以某種方式簡化視圖。對於網格,這可能是某種分頁或限制約束。有很多角度網格可以做這些事情,我只會尋找一個更適合你的情況。

    +1

    我認爲選項2對我們的應用程序來說是越界的,因爲它是一個日誌查看器。我認爲我應該選擇選項1.感謝您的幫助。 –

    相關問題