Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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 $watch';属性更改时未触发的对象_Javascript_Angularjs_Angularjs Scope_Angularjs Controller - Fatal编程技术网

Javascript $watch';属性更改时未触发的对象

Javascript $watch';属性更改时未触发的对象,javascript,angularjs,angularjs-scope,angularjs-controller,Javascript,Angularjs,Angularjs Scope,Angularjs Controller,我有一个目标: $scope.obj={bar:'bar value',foo:'foo value'} 我想知道bar、foo或两者是否改变 我正在这样做: $scope.$watch('obj',function(){console.log(“watching obj”)}) 如果我更改对象的属性“监视obj”消息,它将永远不会显示。但是,如果我观看'obj.foo'或'obj.bar'我可以看到消息。因此,问题是: 为什么在我观看'obj'时没有显示消息?我怎样才能做到这一点? 这更好地显

我有一个目标:

$scope.obj={bar:'bar value',foo:'foo value'}

我想知道bar、foo或两者是否改变

我正在这样做:

$scope.$watch('obj',function(){console.log(“watching obj”)})

如果我更改对象的属性“监视obj”消息,它将永远不会显示。但是,如果我观看
'obj.foo'
'obj.bar'
我可以看到消息。因此,问题是:

为什么在我观看
'obj'
时没有显示消息?我怎样才能做到这一点?


这更好地显示了问题…

您需要将
objectEquality
参数设置为
true

.$rootScope.Scope

//$watch(watchExpression、listener、objectEquality)


您需要将
objectEquality
参数设置为
true

.$rootScope.Scope

//$watch(watchExpression、listener、objectEquality)


您需要将
objectEquality
参数设置为
true

.$rootScope.Scope

//$watch(watchExpression、listener、objectEquality)


您需要将
objectEquality
参数设置为
true

.$rootScope.Scope

//$watch(watchExpression、listener、objectEquality)


我只想补充一下@modendegree的答案

如果要查看的对象有几个元素(在本例中只有两个),也可以使用

$scope.$watch('obj.foo+obj.bar', function() {
    console.log("changed");
});

这比深度观察更有效。

我只想补充一下@modendegree的答案

如果要查看的对象有几个元素(在本例中只有两个),也可以使用

$scope.$watch('obj.foo+obj.bar', function() {
    console.log("changed");
});

这比深度观察更有效。

我只想补充一下@modendegree的答案

如果要查看的对象有几个元素(在本例中只有两个),也可以使用

$scope.$watch('obj.foo+obj.bar', function() {
    console.log("changed");
});

这比深度观察更有效。

我只想补充一下@modendegree的答案

如果要查看的对象有几个元素(在本例中只有两个),也可以使用

$scope.$watch('obj.foo+obj.bar', function() {
    console.log("changed");
});

这比深度监视更有效。

默认情况下,
$watch
仅检查
$scope.obj
本身是否已更改。所以,
$scope.obj={}
将触发回调,但
$scope.obj.baz={}没有。第三个参数启用后者。默认情况下,
$watch
仅检查
$scope.obj
本身是否已更改。所以,
$scope.obj={}
将触发回调,但
$scope.obj.baz={}没有。第三个参数启用后者。默认情况下,
$watch
仅检查
$scope.obj
本身是否已更改。所以,
$scope.obj={}
将触发回调,但
$scope.obj.baz={}没有。第三个参数启用后者。默认情况下,
$watch
仅检查
$scope.obj
本身是否已更改。所以,
$scope.obj={}
将触发回调,但
$scope.obj.baz={}没有。第三个参数支持后者。