3

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

这就是我想看到的(值列中聚合行上的 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

谢谢你的帮助!

4

1 回答 1

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
***********************************************/
于 2013-08-26T20:50:02.193 回答