Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $watchGroup vs$watchCollection?_Javascript_Angularjs_Angularjs Scope - Fatal编程技术网

Javascript $watchGroup vs$watchCollection?

Javascript $watchGroup vs$watchCollection?,javascript,angularjs,angularjs-scope,Javascript,Angularjs,Angularjs Scope,在角上有很多。但是他们之间有什么区别呢 他们两人似乎都做肤浅的手表。是否存在一个明显优于另一个的情况?$watchCollection将监视单个对象上的属性,并在其中一个属性发生更改时通知您 $watchGroup但是监视一组单独的监视表达式 它们在功能上并不等同$watchGroup可用于监视多个表达式,这些表达式都应响应同一回调-这些表达式可能是针对不同对象的单个表达式。这可以用于观看'foo','foo.bar',以及'baz.qux'。这是三个不同的目标-foo、foo的bar属性和ba

在角上有很多。但是他们之间有什么区别呢


他们两人似乎都做肤浅的手表。是否存在一个明显优于另一个的情况?

$watchCollection
将监视单个对象上的属性,并在其中一个属性发生更改时通知您

$watchGroup
但是监视一组单独的监视表达式

它们在功能上并不等同<代码>$watchGroup可用于监视多个表达式,这些表达式都应响应同一回调-这些表达式可能是针对不同对象的单个表达式。这可以用于观看
'foo'
'foo.bar'
,以及
'baz.qux'
。这是三个不同的目标-
foo
foo
bar
属性和
baz
qux
属性,但它们都将委托给同一个处理程序


相比之下,
$watchCollection
只监视单个对象。这对于可能会大量更改其属性的对象(例如,我们自己的
$scope
)来说会更好。根据我们的垃圾名称示例,要实现上述目标,您只需观看
foo
baz
,但
foo
baz
中的任何更改都会通知您(与只收到
foo
本身、
foo.bar
baz.qux

的更改通知不同,这里有一个示例,说明如何使用它们

$scope.data = ['Abc', 'Bcd', 'Cde', 'Def'];
$scope.$watchCollection('data', function(){...});
// responds to changes within $scope.data
// The following line will trigger the watch function:
$scope.data[0] = 'FOO';
-


对此进行了更深入的总结:
$scope.data = ['Abc', 'Bcd', 'Cde', 'Def'];
$scope.$watchGroup('data', function(){...});
// responds to changes on the properties (or functions, etc.)
// Any angular expression can be used in $scope.data
// The following line will trigger the watch function:
$scope.Abc = 'FOO';