我有两个数组,每个数组都有布尔值,我试图使用$ 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/