我有一个对象:
$scope.obj = {bar: 'bar 值', foo: 'foo 值'};
我想知道 bar、foo 或两者是否发生变化。
我正在这样做:
$scope.$watch('obj', function() { console.log("正在监视 obj") });
并且如果我更改对象的属性“正在监视 obj”消息,它永远不会显示。但是,如果我观看 'obj.foo'
或 'obj.bar'
我可以看到该消息。所以,问题是:
为什么当我观看'obj'
时消息没有显示?我该怎么做?
这个plunker更好地显示问题...
最佳答案
您需要将 objectEquality
参数设置为 true
。
http://docs.angularjs.org/api/ng .$rootScope.Scope
//$watch(watchExpression, 监听器, objectEquality)
$scope.$watch('obj', function() {
console.log("watching obj")
}, true);
关于javascript - 当属性改变时$watch的对象不被触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19498817/