ng-grid聚合行中值的总和

时间:2013-08-26 19:07:20

标签: javascript angularjs ng-grid

我有一个包含三列(名称,值,机器)的ng-grid,它显示来自三台不同计算机的指标(名称,值)(如机器列中所示)。我没有为每个指标显示三行,而是在gridOptions中设置了groups: ['name'];但是,我无法弄清楚如何使聚合行显示值的总和。有没有办法访问每个组中的行的值来计算总和?

这就是我想要看到的内容(值列中聚合行的7,10,4,6):

  NAME           VALUE     MACHINE
v metric1 (3)    7
  metric1        3         comp-a
  metric1        2         comp-b
  metric1        2         comp-c
> metric2 (3)    10
> metric3 (3)    4
v metric4 (3)    6
  metric4        5         comp-a
  metric4        0         comp-b
  metric5        1         comp-c

感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

我遇到了同样的问题并尝试了一些我发现的解决方案,但是没有使用我的网格版本。我搜索了网格源并找到了我用于聚合行的模板并将其复制然后调整以包含对我的方法上的函数的调用以显示部分:

在我的gridOptions上,我定义了下面显示的属性

aggregateTemplate: "<div ng-click=\"row.toggleExpand()\" ng-style=\"rowStyle(row)\" class=\"ngAggregate\">" +
    "    <span class=\"ngAggregateText\"><span class='ngAggregateTextLeading'>{{row.totalChildren()}} {{row.label CUSTOM_FILTERS}} {{entryMaybePlural(row)}}</span><span>Total Weight: {{aggFunc(row)}} lbs {{AggItemsLabel}}</span></span>" +
    "    <div class=\"{{row.aggClass()}}\"></div>" +
    "</div>" +
    ""

在网格控制器的范围内,我有函数

  $scope.aggFunc = function (row) {
    var total = 0;
    angular.forEach(row.children, function(cropEntry) {
      total+=cropEntry.entity.weight;
    });
    return total.toString();
  };
  $scope.entryMaybePlural = function (row) {
    if(row.children.length>1)
    {
      return "entries";
    }
    else
      return "entry";
  };

在这两种情况下,我都会看到我将模板中的行传递给控制器​​范围中的函数,然后我查看行上名为children的属性(我只是在其他尝试时使用Chrome调试工具来解决这个问题)没有成功。)

PS我的网格在顶部有这个编译注释,但没有版本:|

/***********************************************
* ng-grid JavaScript Library
* Authors: https://github.com/angular-ui/ng-grid/blob/master/README.md 
* License: MIT (http://www.opensource.org/licenses/mit-license.php)
* Compiled At: 06/03/2013 21:19
***********************************************/