如何$观察数组项的更改,而不是数组本身

时间:2016-02-05 17:51:05

标签: angularjs

例如我有

$scope.array = [{ foo: 'bar'}, { foo: 'bar2'}]

我想看这个数组

$scope.array.pop(); //$watch is not called
$scope.array[0].foo = 'newbar'; //$watch is called
$scope.array = [{ foo: 'bar' }, { foo: 'anotherbar' }]; //$watch is not called

是否可以使用$ scope完成此操作。$ watch?

1 个答案:

答案 0 :(得分:0)

您可以使用函数返回要监视的所需值:

$scope.$watch(function(scope) { return scope.array && scope.array[0].foo; }, function(newValue, oldValue) {
    // any action here
    }
);

如果你需要观察更多的itens,你可以返回另一个包含所有foo对象的数组。