将数据库中的每个值添加到自身

时间:2017-03-09 17:52:36

标签: javascript angularjs

我正在尝试将数据库中的每个值添加到自身,就像我在数据库中的值名称是task_time我想将 task_time 添加到 task_time totalTime = task_time + task_time + ... + taks_time

There is how I get data.
 function getEndTasks() {
        $http.get('db_files/endTasksDB.php').then(function(response) {
            $scope.dates = response.data;
            console.log($scope.dates);
        })
    }

控制台日志看起来像

  

数组[10] 0:对象1:对象2:对象3:对象4:对象5:   对象6:对象7:对象8:对象9:对象

对象0:

Object
$$hashKey:"object:60"
deadline:"2017-02-28"
dept:"test"
id:"1"
priority:null
status:"Closed"
task:"test"
task_end:"2017-03-02 10:57:51"
task_start:"2017-02-27 14:45:53"
task_time:"83"
total_time:"null"
username:"Nelson"

这就是我的尝试。

 $scope.total = response.data.map(function(item) {
                var totalTime = 0;

                for (var i=0; i<(item.task_time).length;i++){
                    totalTime = item.task_time[i];
                    totalTime += totalTime;
            item.total_time = totalTime;
            console.log("total time: " +item.total_time);
                    }
                return item;
            })

我没有任何错误,但控制台日志显示如下:

  

总时间:88总时间:33总时间:99总时间:00等

和我想要显示它的表格:

<table md-table>
    <thead md-head md-order="sort.order">
        <tr md-row>
            <th md-column>Spółka</th>
            <th md-column>Łączny czas</th>
        </tr>
    </thead>
    <tbody md-body>
        <tr md-row md-select="totalTime" md-on-select="" md-auto-select ng-repeat="totalTime in total | orderBy:sort.order | filter:search">
            <td md-cell>{{ totalTime.dept }}</td>
            <td md-cell>{{ totalTime.total_time }} godzin</td>
            </td>
        </tr>
    </tbody>
</table>

1 个答案:

答案 0 :(得分:0)

好的,有几个问题。首先,您收到的数据如下所示:(简化)

var data = [{
  dept:"test",
  task_time:"83"
},{
  dept:"test",
  task_time:"41"
},{
  dept:"other",
  task_time:"10"
}];

现在,如果你想计算所有任务花费的时间,你会做:

var total = 0;
angular.forEach(data, function(item) {
  total += parseFloat(item.task_time);
});

console.log(total) //will output 134

如果要根据部门总和总计,可以将它们存储在如下对象中:

var totalPerDept = {};
angular.forEach(data, function(item) {
  if(!totalPerDept[item.dept]) {
    totalPerDept[item.dept] = 0;
  }
  totalPerDept[item.dept] += parseFloat(item.task_time);
});

然后在视图中你会这样显示:

<div ng-repeat="d in data">
 Department: {{d.dept}} | Total in this dept: {{totalPerDept[d.dept]}}
</div>

如您所见,您使用部门名称作为索引来访问其他对象的属性。

无论如何,正如我在评论中所说的那样,在查询中简单地完成所有这些数学运算会更容易,并且很好地完成了这一切。