1. ホーム
  2. angularjs

[解決済み]どのようにangularjsの配列を深く見るには?

2022-03-26 07:26:40

質問

スコープ内にオブジェクトの配列があり、各オブジェクトのすべての値を監視したいのですが、どうすればよいですか?

これは私のコードです。

function TodoCtrl($scope) {
  $scope.columns = [
      { field:'title', displayName: 'TITLE'},
      { field: 'content', displayName: 'CONTENT' }
  ];
   $scope.$watch('columns', function(newVal) {
       alert('columns changed');
   });
}

しかし、値を変更すると、たとえば TITLETITLE2 は、その alert('columns changed') がポップアップすることはありませんでした。

配列内のオブジェクトをディープウォッチする方法は?

ライブデモがあります。 http://jsfiddle.net/SYx9b/

解決方法は?

の第3引数を設定することができます。 $watchtrue :

$scope.$watch('data', function (newVal, oldVal) { /*...*/ }, true);

参照 https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watch

Angular 1.1.x以降では、$watchCollectionを使用してコレクションを浅く見ることもできます("最初のレベルだけ")。

$scope.$watchCollection('data', function (newVal, oldVal) { /*...*/ });

参照 https://docs.angularjs.org/api/ng/type/$rootScope.Scope#$watchCollection