[英]How to $watch more than one collection in Angular?
我的應用程序中有兩個數組,我想觀察一下變化:
$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
}
當a
或b
被更改時,我必須調用changed()
函數。
$scope.$watchCollection('a', changed);
$scope.$watchCollection('b', changed);
如果我在a
和b
以及init步驟中進行a
更改,則change changed()
回調將被觸發兩次。 我想將兩塊手表合而為一,就像這樣:
$scope.$watchCollection('a, b', changed);
如何使用Angular做到這一點?
有一個名為watchGroup
東西可以用於此目的,但是不幸的是它幾乎沒有用,因為它僅用於淺表。
您可以使用watcher函數返回對象
$scope.$watch(function(){ //Or even try this with watchCollection
return ['a','b'].map(angular.bind($scope, $scope.$eval));
}, function(newV){
console.log(newV);
},true);
您可以為方便起見創建一個自定義觀察程序,就像我在另一個答案中提到的那樣,然后執行類似的操作。
$scope.deepWatchGroup(['a','b'],function(newV){
console.log(newV);
});
使用$scope. $watch('a+b', change)
$scope. $watch('a+b', change)
。 您可以添加任意數量的變量來觀看
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.