我想知道在腳本的每次AJAX下載之後是否有影響this.$scope.$digest();
。我正在使用SignalR從服務器獲取數據。數據一進入,我就想將數據繪製到網格中。雖然我在控制器js中的功能在眼睛的眨眼間執行,但對UI的繪畫需要大約3到4秒,這是不可接受的。
Angular Batarang表示6.8毫秒和1542個觀察者。
如何優化頁面?
我想知道在腳本的每次AJAX下載之後是否有影響this.$scope.$digest();
。我正在使用SignalR從服務器獲取數據。數據一進入,我就想將數據繪製到網格中。雖然我在控制器js中的功能在眼睛的眨眼間執行,但對UI的繪畫需要大約3到4秒,這是不可接受的。
Angular Batarang表示6.8毫秒和1542個觀察者。
如何優化頁面?
您的問題有兩種可能的原因。您要麼經常檢索數據,並且每次收到數據時都要重新繪製數據。或者,您正在檢索大量數據並試圖更新您的視圖中非常大的控件。這裏是你如何解決這些問題,既:
更快爲此,您需要創建檢索到的數據和$scope
數據之間的緩衝。基本上,無論何時您接收到新數據,您都應該將更改推送到不在範圍內的數據結構。通過這種方式,您可以儘可能快地獲取數據,並且不會影響渲染。然後,您需要啓發式方法來決定何時重新繪製數據。這可能基於計時器,或者在數據更改後發生。一旦此條件成立,您將數據更改複製到您的$scope
對象,該對象將更新視圖。
- receive data -> write to non scope buffer
- when some condition is met -> write buffer or buffer changes to $scope
對於這種情況,只能選擇以某種方式簡化視圖。對於網格,這可能是某種分頁或限制約束。有很多角度網格可以做這些事情,我只會尋找一個更適合你的情況。
我認爲選項2對我們的應用程序來說是越界的,因爲它是一個日誌查看器。我認爲我應該選擇選項1.感謝您的幫助。 –
是否瓶頸可能只是太多的物品一次畫?您是否嘗試過使用'limitTo'指令或其他方式進行本地分頁? – o4ohel
是的。我也應用limitTo。 –