[英]$watch's object not triggered when attributes are changed
我有一個對象:
$scope.obj = {bar: 'bar value', foo: 'foo value'};
我想知道bar,foo或兩者都改變了。
我正在這樣做:
$scope.$watch('obj', function() { console.log("watching obj") });
如果我更改了對象的屬性“ watching obj”,則消息永遠不會顯示。 但是,如果我觀看'obj.foo'
或'obj.bar'
,則可以看到該消息。 因此,問題是:
為什么當我觀看'obj'
時消息沒有顯示? 我該怎么辦?
這個傻瓜更好地顯示了問題...
您需要將objectEquality
參數設置為true
。
http://docs.angularjs.org/api/ng。$ rootScope.Scope
// $ watch(watchExpression,listener,objectEquality)
$scope.$watch('obj', function() {
console.log("watching obj")
}, true);
我將添加到@moderndegree的答案中,
如果您要觀看的對象只有幾個元素(在這種情況下只有兩個),您也可以使用
$scope.$watch('obj.foo+obj.bar', function() {
console.log("changed");
});
這比深度監視更有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.