例如,我有一个对象数组。
$scope.items = [
{id: 1, name: 'one'},
{id: 2, name: 'two'},
{id: 2, name: 'three'}
];
并在模板中有类似
<div ng-repeat="item in items">
<input type="text" ng-model="item.name" />
</div>
我想像这样添加
$watch
(用于跟踪输入中的更改)$scope.$watch('item', function(newVal){}, true);
如果我想在
newVal
项(例如{id: 1, name: 'one'}
)中使用,该怎么办?没有对象数组!
newVal
中只有一个更改的对象!我无法在控制器中为数组的每个对象创建变量。
我尝试了类似的东西
for (var i = 0; i < $scope.items.length; i++) {
$scope.$watch('items[' + i = ']', function(newVal) {
console.log(newVal);
}, true);
}
但是那是错误的。
最佳答案
您可以尝试类似
for (var i = 0; i < $scope.items.length; i++) {
(function(k){
$scope.$watch(function(){
return $scope.items[k]
}, function(newVal) {
console.log(newVal);
}, true);
})(i);
}
注意:我尚未测试以上代码;