2014-10-08 3 views
0

로다시에 _.reduce() 메서드를 사용하여 ng-grid에있는 열의 입력을 합계하려고합니다.AngularJS : LoGash를 사용하여 그리드 열을 합계합니다.

나는 적절한 코드가 될 것이라고 생각했던 것과 함께를 가졌지 만 코드를 주석 처리하지 않으면 플 런커가 깨져서 현재 정적을 반환하고 있습니다.

내가 필요한 것은 합계 행의 연령 필드가 다른 연령대 중 하나를 수정할 때 수정하는 것입니다.

// 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> 

답변

2

당신은 문제의 몇 가지있다; 먼저 합계를 표시하기 위해 ng-grid 바닥 글을 사용하는 방법을 고려해야합니다 (ng-grid footer 예제에 대한 빠른 Google 검색이 도움이 될 것입니다). 유일한 다른 방법은 Age 열의 CellTemplate을 제공하고 컨트롤러의 범위에서 해당 템플릿을 호출하여 값을 더하는 것입니다. 그러나이 celltemplate은 두 번째 열의 각 셀에 사용되므로 최종 셀의 컨텍스트에서 호출하는 경우 합계 값만 추가 논리가 필요합니다. 바닥 글 템플릿 ng-grid를 사용하는 더 많은 이유는 다음과 같습니다.

나는 modified your code so that it works을 가졌지 만 모든 셀에서 합계가 계산되므로 이는 합계가 아니므로 '합계'를 사용해서는 안됩니다. 귀하의 데이터에서 '또 다른 행'으로 간주됩니다.

+0

감사합니다 ... 저는 지금 바닥 글에 대해 알지 못해서 지금 google ... 분석가를위한 경험처럼 스프레드 시트를 만들려고합니다. – jgravois