2017-03-09 71 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等...你明白嗎? :) –