AngularJS:Array和deep $ watch不起作用

时间:2016-12-25 00:20:22

标签: javascript angularjs arrays

我有一个带有布尔值的数组,我需要做的是尝试使用$ watch函数,以便在数组中发生某些更改时显示消息。

正如您在此code中看到的那样,数组会更改其值,但$ watch函数不起作用。有什么想法吗?

视图

<div data-ng-repeat="catA in categoryA">
    <b><input type="checkbox" checked="checked" ng-model="arrayCategoryA[$index]"/>{{catA.name}}</b>
</div>

控制器

app.controller("controllerApp", function($scope, $http, $filter){

  $scope.arrayCategoryA = [];

  $scope.$watchCollection($scope.arrayCategoryA, function(newVal, oldVal){
    console.log("something changed");
  }, true);

  $http.get("categoryA.json").success(function(data) {
     $scope.categoryA = data;
     for (var i = 0; i < $scope.categoryA.length; i++) 
     $scope.arrayCategoryA[i] = true;
  });

});

1 个答案:

答案 0 :(得分:2)

$watchCollection采用监视表达式,在本例中是arrayCategoryA范围变量的名称。

 $scope.$watchCollection(`arrayCategoryA`, function(newVal, oldVal){
    console.log("something changed");
  }, true);

Updated working plunkr