我正在尝试使用lodash中的_.reduce()方法来计算ng-grid中列的输入。
我有一个plunker,我认为这是正确的代码,但是如果我取消注释该代码,那么plunker会中断,所以我当前正在返回静态。
我需要的是总行上的年龄字段,以便在修改其他年龄的任何时候更新。
// main.js
var app = angular.module('myApp', ['ngGrid']);
app.constant('_', window._)
.run(function ($rootScope) {
$rootScope._ = window._;
});
app.controller('MyCtrl', function($scope, _) {
function getAge(){
/*_.reduce($scope.myData,
function(age, num) {
return age + num;
});
return totalAge;*/
return 230;
}
$scope.myData = [
{name: "Moroni", age: 50},
{name: "Tiancum", age: 43},
{name: "Jacob", age: 74},
{name: "Nephi", age: 29},
{name: "Enos", age: 34},
{name: "Total", age: getAge()}
];
$scope.gridOptions = {
data: 'myData',
enableCellSelection: true,
enableCellEditOnFocus: true,
enableRowSelection: false,
columnDefs: [{field: 'name', displayName: 'Name', enableCellEdit: true}, {field:'age', displayName:'Age'}]
};
});
并查看:
<body ng-controller="MyCtrl">
<div class="gridStyle" ng-grid="gridOptions"></div>
</body>
答案 0 :(得分:2)
你有几个问题;首先,您应该考虑使用内置的ng-grid页脚来显示总数(快速谷歌搜索ng-grid页脚示例将有所帮助)。唯一的另一种方法是为Age列提供CellTemplate,并让该模板调用控制器范围内的函数来添加值。但是,此celltemplate将用于第二列中的每个单元格,因此如果在最终单元格的上下文中调用,则需要额外的逻辑才能对值求和。使用页脚模板ng-grid的更多理由提供: - )
我已modified your code so that it works,但您获得了每个单元格中的总计,这不是您所追求的,这就是为什么“Total”不应被视为数据中的“另一行”。< / p>