user3090790
user3090790

Reputation: 836

how to access function parameter value inside nested AngularJS for each loop?

I am new for AngularJS and I am trying to access function parameter value inside nested angular for each loop , but that variable gets undefined error. here is my code .

var pieChart = function (_data, _fieldName) {
      var data = _data;
      var cost_max = 0;
      var cost_min = 99999;

      angular.forEach(groupBy($scope.api_data, _fieldName), function (obj, index) {
          var total = 0;
          var name = '';
          angular.forEach(obj, function (row, i) {
              name = row._fieldName;
              total += 1;
          })
          data.push([name, total]);
          if (cost_max < obj.cost) cost_max = obj.cost;
          if (cost_min > obj.cost) cost_min = obj.cost;
      })
      $scope.chart.data = data;
      $scope.loaded = 1;
  }

row._fieldName is undefined here , what was the issue ? kindly help me.

  var groupBy = function (xs, key) {
      return xs.reduce(function (rv, x) {
          (rv[x[key]] = rv[x[key]] || []).push(x);
          return rv;
      }, {});
  };

Upvotes: 1

Views: 72

Answers (1)

JulCh
JulCh

Reputation: 2878

In your second angular.forEach loop, you have to replace row._fieldName with row[_fieldName].

angular.forEach(obj, function (row, i) {
  name = row[_fieldName];
  total += 1;
})

By writing row._fieldName, you try to get the key named _fieldName from object row instead of the real field.

Little JSFiddle

Upvotes: 1

Related Questions