如何仅在角度范围变量中观察第一级

时间:2018-03-25 10:29:31

标签: angularjs

假设我有一个角度数组 -

setVisible(true)

现在我不想在数据下观察每一个值。 我总是完全改变数据对象 -

$scope.data = [
               { a:1, b:2},
               {a:{b:{c:5}}}
              ]

那么如何减少角度观察者的数量呢?

1 个答案:

答案 0 :(得分:0)

这不是Angular 1观察者的工作方式。

AngularJS会在您实际观看内容(例如$scope.data[0].a)时创建观察者,并且只会观看该内容。如果您有一个百万价值数组,并在$scope.data[0].b(或.$digest)时观看$apply,那么它将通过每个此类观察者(通常使用$ watch或{{}}内部定义或事件)并检查其值是否已更改(脏检查),它对$ scope.data整体没有任何作用。

总结一下:

  • 观察者只有在您观看时才会创建。
  • 当观察者运行时,他们只会检查值是否发生变化。
  • 您的数组大小或操作方式无关紧要,因为您拥有的观察者数量取决于您的观察代码,而不是您定义代码的数据。

请参阅此slightly aged but still mostly correct post,了解观察者的工作方式。