如何为每个循环访问嵌套的AngularJS中的函数参数值?

时间:2017-09-07 06:54:49

标签: angularjs

我是AngularJS的新手,我试图在每个循环的嵌套角度内访问函数参数值,但该变量得到未定义的错误。这是我的代码。

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,问题是什么?请帮助我。

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

1 个答案:

答案 0 :(得分:1)

在第二个angular.forEach循环中,您必须将row._fieldName替换为row[_fieldName]

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

通过撰写row._fieldName,您尝试从对象_fieldName获取名为row的密钥,而不是真实字段。

Little JSFiddle