我想知道在每次下载AJAX脚本后调用this.$scope.$digest();
是否有任何影响。我正在使用SignalR从服务器获取数据。数据进入后,我想将数据绘制到网格中。虽然我在控制器js中的功能在眼睛的眨眼时间内执行,但是对UI的绘画需要大约3到4秒,这是不可接受的。
Angular Batarang说6.8毫秒和1542观察者。
如何优化页面?
答案 0 :(得分:2)
您的问题有两个可能的原因。要么经常检索数据,要么每次收到数据时重新绘制数据。或者您正在检索大量数据并尝试更新视图中非常大的控件。以下是解决这两个问题的方法:
为此,您需要在检索到的数据和$scope
数据之间创建一个缓冲区。基本上,无论何时收到新数据,都应将更改推送到不在范围内的数据结构。这样,您可以根据需要快速获取数据,并且不会影响渲染。然后,您需要一个启发式方法来决定何时重绘数据。这可能基于计时器,或者数据更改后的某些内容。一旦满足此条件,您将数据更改复制到$scope
对象,这将更新视图。
- receive data -> write to non scope buffer
- when some condition is met -> write buffer or buffer changes to $scope
对于这种情况,您唯一的选择是以某种方式简化视图。对于网格,这可能是某种分页或限制约束。有很多角度网格可以做这些事情,我会找一个更适合你情况的网格。