angular:$对象数组中的watch对象

时间:2016-06-17 13:31:57

标签: javascript angularjs angular

例如,我有一个对象数组。

$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);
}

但错了。

2 个答案:

答案 0 :(得分:2)

您可以尝试类似

的内容
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);
}

注意:我没有测试过上面的代码;

答案 1 :(得分:1)

试试这个。

&#13;
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div class="main-content" ng-app="MyApp" ng-controller="Main as ctrl">
<div ng-repeat="item in ctrl.items">
    <input type="text" ng-model="item.name" />
</div>
</div>
&#13;
Warning: mysqli_query() expects parameter 1 to be mysqli, null given in
&#13;
&#13;
&#13;