我有两个数组,每个数组都有布尔值,我试图使用$ watchCollecion函数在其中一个数组中发生某些更改时显示一条消息,但由于某种原因它不起作用。

我想看看这个example有什么问题

控制者

  $scope.arrayCategoryA = [];
  $scope.arrayCategoryB = [];

  $scope.$watchCollection(['arrayCategoryA', 'arrayCategoryB'], function(newVal, oldVal, scope){
    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;
  });

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

最佳答案

AngularJS一直都有Scope。$ watch()函数作为观察的手段
  [并响应]给定值的更改。使用AngularJS 1.1.4,
  但是,他们添加了Scope。$ watchCollection()函数作为一种手段
  观察集合中的更改(作为数组或对象)。


$ watchCollection仅适用于一个数组或对象,因此您必须将代码更改为单个手表。

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

关于javascript - $ watchCollection和多个表达式不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41322088/

10-10 00:20