angularjs:$ scope。$ watch在forloop中不起作用

时间:2016-03-14 14:58:31

标签: javascript angularjs for-loop

$ watch下的日志返回newV和OldV的undefined,但是在watch返回对象的right属性之前记录。我附加了显示数据结构的第一个日志的结果。我正在尝试向contributors数组中的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);
                })
              }
            }

1 个答案:

答案 0 :(得分:2)

替换

Red: 10
Blue: 8
Yellow: 7

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

但我不认为你应该生成这样的手表,因为这是一个很大的开销。也许你可以告诉我们你实际想要完成什么

最有可能这会更好

HTML

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

的Javascript

<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>

这是一个执行您可能想要做的事情的代码笔

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