调用它的影响。$ scope。$ digest();

时间:2016-09-23 06:00:03

标签: javascript angularjs angular signalr

我想知道在每次下载AJAX脚本后调用this.$scope.$digest();是否有任何影响。我正在使用SignalR从服务器获取数据。数据进入后,我想将数据绘制到网格中。虽然我在控制器js中的功能在眼睛的眨眼时间内执行,但是对UI的绘画需要大约3到4秒,这是不可接受的。

Angular Batarang说6.8毫秒和1542观察者。

如何优化页面?

1 个答案:

答案 0 :(得分:2)

您的问题有两个可能的原因。要么经常检索数据,要么每次收到数据时重新绘制数据。或者您正在检索大量数据并尝试更新视图中非常大的控件。以下是解决这两个问题的方法:

  1. 数据检索比更新速度更快
  2. 为此,您需要在检索到的数据和$scope数据之间创建一个缓冲区。基本上,无论何时收到新数据,都应将更改推送到不在范围内的数据结构。这样,您可以根据需要快速获取数据,并且不会影响渲染。然后,您需要一个启发式方法来决定何时重绘数据。这可能基于计时器,或者数据更改后的某些内容。一旦满足此条件,您将数据更改复制到$scope对象,这将更新视图。

    - receive data -> write to non scope buffer
    - when some condition is met -> write buffer or buffer changes to $scope
    
    1. 检索的数据很大,视图很大且很复杂
    2. 对于这种情况,您唯一的选择是以某种方式简化视图。对于网格,这可能是某种分页或限制约束。有很多角度网格可以做这些事情,我会找一个更适合你情况的网格。