AngularJS:使用LoDash来计算ng-grid列

时间:2014-10-08 12:13:20

标签: angularjs lodash

我正在尝试使用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>

1 个答案:

答案 0 :(得分:2)

你有几个问题;首先,您应该考虑使用内置的ng-grid页脚来显示总数(快速谷歌搜索ng-grid页脚示例将有所帮助)。唯一的另一种方法是为Age列提供CellTemplate,并让该模板调用控制器范围内的函数来添加值。但是,此celltemplate将用于第二列中的每个单元格,因此如果在最终单元格的上下文中调用,则需要额外的逻辑才能对值求和。使用页脚模板ng-grid的更多理由提供: - )

我已modified your code so that it works,但您获得了每个单元格中的总计,这不是您所追求的,这就是为什么“Total”不应被视为数据中的“另一行”。< / p>