$scope.testObj={};
angular.forEach(results, function (value,index) {
$scope.testObj[index]=value.arr;
console.log($scope.testObj[index]);
console.log(index);
$scope.$watch('testObj',function(newVal, oldVal) {
console.log(newVal, oldVal) ;
},true
);
})
上面的代码工作正常(不要担心results
;它是一个数组)。问题出在我正在尝试的时候:
$scope.$watch('testObj[index]',function(newVal, oldVal) {
console.log(newVal, oldVal) ;
},true
);
我不知道为什么会发生这种情况,我从 newVal,oldVal 获得undefined
。我该如何解决?
顺便提一句testObj[0]
......
答案 0 :(得分:2)
试试这个,
$scope.myvar = testObj[index];
$scope.$watch('myvar',function(newVal, oldVal) {
console.log(newVal, oldVal) ;
},true
);
修改强>
如果在ng-repeat中渲染更改数组,则可以使用ng-change指令并传入$ index参数。
<div ng-repeat="arr in myvar">
<input type="text" ng-model="arr.location" ng-change="changeValue($index)"/>
</div>
或使用循环并使用其索引
进行访问$scope.$watch('myvar', function (newValue, oldValue) {
for(var i = 0; i < newValue.length; i++) {
}
}, true);
答案 1 :(得分:0)
$ watchGroup可以满足您的需求更多doc https://docs.angularjs.org/api/ng/type/ $ rootScope.Scope
答案 2 :(得分:0)
你反过来了。由于forEach
仅执行一次,因此$watchers
内部只会观看一次,然后才会被删除。您需要做的是观看收藏,然后放置forEach
insde。
$scope.$watch('testObj', function(newVal, oldVal) {
angular.forEach(newVal, function(value, index) {
$scope.testObj[index] = value.arr;
console.log($scope.testObj[index]);
console.log(index);
})
}, true);