簡體   English   中英

如何在Angular中觀看多個收藏?

[英]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
}

ab被更改時,我必須調用changed()函數。

$scope.$watchCollection('a', changed);
$scope.$watchCollection('b', changed);

如果我在ab以及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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM