简体   繁体   中英

aggregate in nested ng-repeat

I want to create a sum of taskAssembly.labour of each taskAssembly object and put it in the totalLabour field

see this plunker. http://plnkr.co/edit/rKnup0IIPRYvh8JLHXbD?p=preview

see my data:

{ "client": "client1","takeoff": [{
"taskName": "ToW",
 "taskQnt": 2300,
"totalLabour":"",
"taskAssembly": [
  {
    "taskName": "ToW",
    "taskQnt": 2300,
    "taskLabour": 22,
    "taskAssembly": [
  { "qnt": 2300, "product": "non-INT", "labour": 12, "application":      "spray" },
  { "qnt": 2300, "product": "non-INT", "labour": 10, "application": "strips" }
    ]
  },
      {
       "taskName": "Pens",
       "taskQnt": 43,
        "taskLabour": 23,
        "taskAssembly": [
           { "qnt": 43, "product": "non-INT", "labour": 23, "application": "spray" }
           ]
       }
    ]}

my code is not exactly doing what I need.

      $scope.getTotalLabour = function(){
    var total = 0;
    for(var i = 0; i < $scope.estimate.takeoff.length; i++){
      var item = $scope.estimate.takeoff[i];
      total += (item.taskLabour);
    }
    return $scope.estimate.totalLabour = total;
  }

any idea of how I can do this?

Check working demo: JSFiddle

Simply create a nested loop like:

for(var i = 0; i < $scope.estimate.takeoff.length; i++){
  var total = 0;
  var item = $scope.estimate.takeoff[i];
  console.log(item);
  for (var j = 0; j < item.taskAssembly.length; j++) {
    total += (item.taskAssembly[j].labour);
  }
  item.totalLabour = total;
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM