监视 AngularJS 中对象的所有属性

Watch on all attributes of an object in AngularJS

我的 $scope 中有一个对象,其中包含一些属性,例如:

$scope.content = {
     name : 'myname',
     description : 'mydescription',
     keyword : 'some keyword'
}

现在我想监听每个属性的每个变化。我在它自己的对象上设置了 watch 但我无法更改它的属性(它的属性是通过绑定到一些输入字段从 UI 更改的)。

$scope.$watch('content', function(){
     // do some work
}

当我如下设置监视某些属性时,我可以获得该属性的更改。

$scope.$watch('content.name', function(){
     // do some work
}

有没有办法在不对所有属性设置监视的情况下监听对象属性的变化?

使用 $watch 的第三个参数,像这样:

$scope.$watch('content', function(){
     // do some work
}, true);

如果为真,则计算表达式的对象相等性,这意味着包含属性。否则只是评估参考。

我们可以通过将第三个参数传递为 true 来使用 Equality $watch,根据 API 参考 $watch 接受如下三个参数

$watch(watchExpression, listener, [objectEquality]);

如果第三个参数为 true ,它将监视对象内的所有属性

$scope.$watch("content",function(){},true);

有关 $watch 的更多信息,您可以参考下面的视频 https://www.youtube.com/watch?v=IKPrhB8alV4