监视 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
我的 $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