2016-03-14 2 views
0

Журнал под $ watch возвращает undefined как для newV, так и для OldV, но журнал перед тем, как часы вернут свойство права объекта. Я приложил результаты первого журнала, который показывает структуру данных. Я пытаюсь добавить слушателя в свойство суммы внутри массива contributors. 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

Это недостаток выражений углов, которые простительны и не выбрасывают исключение. Не конкатенация значений 'j' и' k'. – ste2425

ответ

2

заменить

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

с

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

, но я не думаю, что вы должны генерировать часы, как это, как это много накладных расходов. может быть, вы можете сказать, что вы на самом деле пытаетесь достичь

, скорее всего, это будет лучше

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

+0

Спасибо за быстрый ответ Logan, я хочу сохранить объект с помощью года (ключа) и суммы (значения), и по мере того, как сумма изменится в этом году, я хочу увеличить эту сумму до соответствующего года. Год находится внутри объекта localcost. –

Смежные вопросы