我的应用程序中有两个数组,我想观察更改:
$scope.a = [{id: 1, text: 'test a - 1'}, ...];
$scope.b = [{id: 1, text: 'test b - 1'}, ...];
function changed(){
// notify application about changes in a or b
}
我必须在changed()
或a
更改时调用b
函数。
$scope.$watchCollection('a', changed);
$scope.$watchCollection('b', changed);
如果我在changed()
和a
以及初始步骤中进行了更改,b
回调将被触发两次。我想把两个手表合二为一,这样的东西:
$scope.$watchCollection('a, b', changed);
如何使用Angular执行此操作?
答案 0 :(得分:3)
有一种叫做watchGroup
的东西你可以用它来实现这个目的,但不幸的是它几乎没用,因为它只是浅表。
您可以使用观察者功能返回您的对象
$scope.$watch(function(){ //Or even try this with watchCollection
return ['a','b'].map(angular.bind($scope, $scope.$eval));
}, function(newV){
console.log(newV);
},true);
您可以改为 create a custom watcher for your convenience as i had mentioned in another answer 并执行此类操作。
$scope.deepWatchGroup(['a','b'],function(newV){
console.log(newV);
});
答案 1 :(得分:1)
使用$scope. $watch('a+b', change)
。您可以添加任意数量的变量来观看