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={}代码>没有。第三个参数支持后者。