【问题标题】:AngularJS: Using LoDash to total a ng-grid columnAngularJS:使用 LoDash 总计一个 ng-grid 列
【发布时间】:2014-10-08 12:13:19
【问题描述】:

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

【问题讨论】:

    标签: angularjs lodash


    【解决方案1】:

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

    我有 modified your code so that it works,但您得到的是每个单元格中的总和,这不是您所追求的,这就是为什么不应将“总计”视为数据中的“只是另一行”。

    【讨论】:

    • 谢谢...我不知道页脚,所以我现在要谷歌...我正在尝试为分析师创建一个类似经验的 Excel 电子表格
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2013-11-26
    • 1970-01-01
    • 2017-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多