javascript - angularjs:$scope.$watch在for循环内不起作用

标签 javascript angularjs for-loop

$watch 下的日志对于 newV 和 OldV 都返回 undefined,但 watch 之前的日志返回对象的正确属性。我附上了显示数据结构的第一个日志的结果。我正在尝试向贡献者数组内的 amount 属性添加一个监听器。 enter image description here

for(var j = 0; j < vm.project.localCosts.length; j++) {
              console.log( vm.project.localCosts[j]);
              for (var k=0; k < vm.project.localCosts[j].contributors.length; k++) {
                console.log(vm.project.localCosts[j].contributors[k]);
                $scope.$watch('vm.project.localCosts[j].contributors[k].amount',function(newV,OldV){
                  console.log(newV,OldV);
                })
              }
            }

最佳答案

替换

'vm.project.localCosts[j].contributors[k].amount' 

'vm.project.localCosts[' + j + '].contributors[' + k + '].amount'

但我认为你不应该生成这样的 watch ,因为它的开销很大。也许您可以告诉我们您实际上想要完成什么

这很可能会更好

HTML

<div ng-app="demo">
  <table ng-controller="demoController">
    <tr ng-repeat="localCost in vm.project.localCosts">
      <td ng-repeat="contributor in localCost.contributors">
        <input ng-change="callback(localCost.contributors[$index], contributor, $index, $parent.$index)" type="text" ng-model="localCost.contributors[$index]" />
      </td>
    </tr>
  </table>
</div>

Javascript

var app = angular.module("demo", []);

app.controller("demoController", function($scope) {
  $scope.vm = {
    project: {
      localCosts: [{
        contributors: ["a", "b", "c"]
      }, {
        contributors: ["e", "f", "g"]
      }, {
        contributors: ["h", "i", "j"]
      }]
    }
  };

  $scope.callback = function(newValue, oldValue, i, j) {
    console.log(i, j, oldValue, newValue);
  };
});

这是一支代码笔,可以完成您可能想做的事情

http://codepen.io/anon/pen/BKLEME?editors=1010

关于javascript - angularjs:$scope.$watch在for循环内不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35990941/

相关文章:

javascript - 当我们将原语视为 JavaScript 中的对象时会发生什么?

javascript - 在 JavaScript 中按字体大小选择 DOM 节点

JavaScript 按钮链接阻止点击时滚动

javascript - 通过 Angular 中的服务访问全局对象

c - For 循环对数字之间进行计数

python - 动态创建嵌套 for 循环?

javascript - 如何使用不同网络的不同端口访问api?

javascript - 使用 Jasmine : how to remove or modify spyOn 进行 Angular 单元测试

Python:是否有类似 C 的 for 循环可用?

javascript - 当使用 .text() 修改元素时,jQuery .click() 不会触发