Как получить сумму даты часов + мин
<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/ подчеркивание.