2017-01-09 2 views
0

hier verwendet, ist app.jswie die Summe der Menge für denselben Namen in ng-repeat berechnen 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; 
      } 
}); 

hier ist alle Daten, in denen immer so viele Datensätze gleiche Namen, aber Differnt ausstehenden Betrag sind, so Ich möchte nur den einzelnen Namen und die Summe der dort vorkommenden Beträge anzeigen, damit ich sie in einer Zeile anzeigen kann. Ich bin nicht immer, wie es zu erreichen .. bitte helft mir ..

hier ist 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

auf diese Weise i m‘Abrufen von Daten

+0

Welchen Fehler oder ein Problem haben Sie? –

+0

Können Sie weiter ausführen, was Sie mit "Ich komme nicht dazu, es zu erreichen" sagen. Es ist nicht, weil "DeatilTeam" falsch geschrieben ist, oder? Haben Sie auch einen Controller eingerichtet und Ihren Service eingegeben? Ich kann in Ihrem HTML keinen Controller-Setup sehen, wo Ihr Scope definiert wäre und welcher verwendet werden würde, um auf die Daten vom Service zurückzugreifen. – Jackthomson

+0

Bitte zeigen Sie mir die Daten an? –

Antwort

0

Code hat einige allgemeine Probleme, lasst uns das zuerst lösen.

Zunächst vorausgesetzt, dass Ihre Datei data.dp_inst_pending Integer ist, haben Sie sie direkt in ng-if verwendet. In diesem Fall wird, wenn jemand tatsächlich einen ausstehenden Betrag von Null hat, dieser nicht angezeigt.

Zweitens möchten Sie die Summe des ausstehenden Betrags für die Konten mit dem gleichen Namen berechnen. Dafür müssen Sie eine doppelte for-Schleife ausführen. Eine, um Namen zu prüfen, und andere, um den ausstehenden Betrag hinzuzufügen, wenn der Name gleich ist. Ich habe ein Beispiel für das selbe erstellt, das ich denke, befriedigt Ihre Anforderungen. Bitte gehen Sie durch und optimieren Sie wie erforderlich.

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>

Ich Optimierung es nicht, wie es von Ihnen getan werden sollte.

+0

Lassen Sie mich wissen, wenn etwas anderes dazu erforderlich ist oder Sie irgendwelche Zweifel haben – rambo

+0

vielen Dank .... –

Verwandte Themen