Как получить сумму даты часов + мин

     <tr data-ng-repeat="timesheet in timesheets">
                    <td>{{timesheet.startDate  | date:'dd/MM'}}</td>
                    <td>{{timesheet.startTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.endTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.breakTime  | date:'HH:mm'}}</td>
                    <td>{{timesheet.totalTime | date:'HH:mm'}}</td>
                    <td >{{timesheet.note}}</td>

                </tr>

и я хочу сделать новую переменную с суммой всех timesheet.totalTime, timesheet.totalTime является датой, поэтому я могу использовать getHours и getMinutes

Так что мой вопрос в том, как я могу сделать новый int / number var, который получит сумму totaltime, например..

   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 09:30
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.45
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 01:15
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.00
   <td>{{timesheet.totalTime | date:'HH:mm'}}</td> //= 10.00

<td>{{timesheet.totalTimeSum}}</td> //= 41.30  ??

как мне сделать это на стороне контроллера

1 ответ

Вы можете создать метод контроллера, который использует reduce подвести timesheets:

$scope.timesheets = [
    {
        totalTime: 1
    },
    {
        totalTime: 3
    },
    {
        totalTime: 2
    },
    {
        totalTime: 10
    }    
];

$scope.totalTimeSum = function () {
    return $scope.timesheets.reduce(function (memo, timesheet) {
        // assuming you've DI'd $filter
        var time = $filter('date')(timesheet.totalTime, 'HH:mm');
        return memo + (+time);
    }, 0); 
}; // 16

В зависимости от того, какие браузеры вы поддерживаете, вам может понадобиться Array#reduce или используйте lodash/ подчеркивание.

скрипка

Другие вопросы по тегам