2017-03-09 44 views
0

我试图从数据库中每一个值添加到自己喜欢在我的数据库值名称是task_time我想补充task_timetask_timeTOTALTIME = 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> 
+0

你为什么不直接用mysql来做? – yBrodsky

+0

我不会使用映射...声明一个变量,使用forEach遍历数据,为赋值变量添加值,并在最后得到您的总数 - 但如上所述,只需从db中直接执行是更好的答案 –

+0

@yBrodsky但后来我会计算每个部门的总时间。 如果部门='东西'计数总时间其他如果部门='东西2'计数时间等 –

回答

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> 

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

无论如何,正如我在评论中所说的那样,简单地在查询中完成所有这些数学操作并且将它们全部传递好会更容易。

+0

谢谢你的答案,无论如何,我会尝试在查询中做数学像你说的。 –

+0

我检查了你的代码,它的工作原理,但我有问题。是否有可能做出这样的事情:我有部门:测试,部门:测试,部门:其他部门:其他。我想总结它像测试= 20,其他= 40一次不显示测试= 15,测试= 5等...你明白吗? :) –