观察AngularJS中对象的所有属性

时间:2017-06-19 22:53:26

标签: javascript angularjs angularjs-watch

我的$ scope中有一个对象,其中包含一些属性,如以下内容:

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

现在我想听听每个属性的每个变化。我在自己的对象上设置监视但我无法对其属性进行更改(通过绑定到某些输入字段,其属性从UI更改)。

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

当我按照以下属性设置监视时,我可以更改该属性。

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

有没有办法在没有设置监视所有属性的情况下听取对象属性的更改?

2 个答案:

答案 0 :(得分:3)

使用$watch的第三个参数,如下所示:

#define in_cksum(m, len)        in_cksum_skip(m, len, 0)

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

答案 1 :(得分:0)

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

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

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

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

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