2017-01-09 70 views
0

這裏計算量爲NG-重複相同名稱的總和app.js如何使用angularjs

AllServices.teamAllDataFunction1(User) 
     .then(function(response) { 
      $scope.User.data=response.data['DeatilTeam']; 
      console.log($scope.User.data); 
      var sum = 0; 
      for (var i = 0; i < ($scope.User.data).length; i++) { 
       sum += parseInt($scope.User.data[i].dp_inst_pending) || 0; 
      } 
}); 

這裏m到處其中具有相同名稱但不同的充未決量,使多條記錄的所有數據,所以我想只顯示單個名稱和總計有掛額,以便我可以單行顯示。我沒有得到如何實現..請幫助我..

這裏是HTML,

<table ng-table> 
       <tr> 
        <th>advisor_name</th> 
        <th>totalpending</th> 
       </tr> 

       <tr ng-repeat="data in User.data" ng-if="data.dp_inst_pending && data.dp_inst_pending == 0"> 
        <td>{{data.AdvisorName}}</td> 
        <td>{{data.dp_inst_pending}}</td> 
       </tr> 
      </table> 

enter image description here

這樣我越來越數據

+0

您遇到什麼錯誤或問題? –

+0

你能否詳細說明你的意思是'我沒有去實現它'。這不是因爲'DeatilTeam'拼錯了嗎?你有沒有設置一個控制器並注入你的服務?我看不到您的HTML中的控制器設置,您的範圍將被定義,並且將用於訪問服務中的數據 – Jackthomson

+0

請向我顯示數據? –

回答

0

代碼有幾個一般問題,我們先解決。

首先,假設你的data.dp_inst_pending是Integer,你直接在ng-if中使用它。在這種情況下,如果某人實際上有零等待金額,則不會顯示。

其次,您要計算具有相同名稱的帳戶的待處理金額的總和。爲此,你將不得不運行雙循環。如果名稱相同,則檢查名稱和其他添加待處理數量。我爲此創建了一個樣本,我認爲這符合您的要求。請按需要進行優化。

var myApp = angular.module("myApp", []); 
 
myApp.controller("MyController", ['$scope', 
 
    function($scope) { 
 
    $scope.User = {}; 
 
    $scope.User.data = [{ 
 
     "advisor_name": "Test1", 
 
     "dp_inst_pending": 300 
 
    }, { 
 
     "advisor_name": "Test2", 
 
     "dp_inst_pending": 0 
 
    }, { 
 
     "advisor_name": "Test1", 
 
     "dp_inst_pending": 500 
 
    }, { 
 
     "advisor_name": "Test2", 
 
     "dp_inst_pending": 600 
 
    }, { 
 
     "advisor_name": "Test1", 
 
     "dp_inst_pending": 15 
 
    }, { 
 
     "advisor_name": "Test2", 
 
     "dp_inst_pending": 150 
 
    }, { 
 
     "advisor_name": "Test3", 
 
     "dp_inst_pending": 30 
 
    }]; 
 
    $scope.User.summedData = []; 
 
    var sums = []; 
 
    var advisorNames = []; 
 

 

 
    for (i = 0; i < $scope.User.data.length; i++) { 
 
     var key = $scope.User.data[i].advisor_name; 
 
     if (advisorNames.indexOf(key) >= 0) {} else { 
 
     var sumOfKey = 0; 
 
     for (j = 0; j < $scope.User.data.length; j++) { 
 
      if ($scope.User.data[j].advisor_name == key) { 
 
      sumOfKey += $scope.User.data[j].dp_inst_pending; 
 
      } 
 
     } 
 
     sums.push(sumOfKey); 
 
     advisorNames.push(key); 
 
     } 
 
    } 
 
    $scope.Test = {}; 
 
    $scope.Test.data = []; 
 
    for (k = 0; k < sums.length; k++) { 
 
     $scope.Test.data[k] = { 
 
     "advisor_name": advisorNames[k], 
 
     "dp_inst_pending": sums[k] 
 
     } 
 
    } 
 
    console.log(sums); 
 
    console.log(advisorNames); 
 
    console.log($scope.Test.data); 
 
    } 
 
]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> 
 

 
<div ng-app="myApp"> 
 
    <div ng-controller="MyController"> 
 
    <table ng-table> 
 
     <tr> 
 
     <th>advisor_name</th> 
 
     <th>totalpending</th> 
 
     </tr> 
 

 
     <tr ng-repeat="data in Test.data"> 
 
     <td>{{data.advisor_name}}</td> 
 
     <td>{{data.dp_inst_pending}}</td> 
 
     </tr> 
 
    </table> 
 

 
    </div> 
 
</div>

我不是優化它,因爲它應該由你來完成。

+0

讓我知道如果還有其他事情需要在這個或你有任何疑問 – rambo

+0

非常感謝你.... –