web-dev-qa-db-fra.com

calculer la somme des valeurs en répéter Angularjs

Je suis nouveau à Angularjs. J'affiche la liste des éléments en utilisant ng-repeat. comment en calculer la somme? y at-il une méthode simple pour le calculer en HTML en utilisant l'expression?

name  numberofyears amount interest 
 xxx       2          4000   4%
 yyy       3          3000   10%
 zzz       5          6000    6%

 Total     10        13000   16%

Les trois premières lignes proviennent de la répétition ng.Je veux juste calculer le total comme indiqué ci-dessus. Merci d'avance

Ceci est assez similaire à Calculer la somme des éléments répétés dans AngularJS ng-repeat cette question. Mais pas exactement. J'essaie de calculer en utilisant l'expression car j'ai beaucoup de lignes

4
Psyche Genie

Il est possible de le faire, mais je pense que ce type de logique convient le mieux à votre contrôleur. Quoi qu’il en soit, c’est un moyen possible de réaliser ce que vous avez demandé avec ng-init:

 <table ng-init="items.total = {}">
    <tr>
      <td>name</td>
      <td>numberofyears</td>
      <td>amount</td>
      <td>intrest</td>
    </tr>
    <tr ng-repeat="item in items">
      <td>{{item.name}}</td>
      <td ng-init="items.total.numberofyears = items.total.numberofyears + item.numberofyears">{{item.numberofyears}}</td>
      <td ng-init="items.total.amount = items.total.amount + item.amount">{{item.amount}}</td>
      <td ng-init="items.total.interest = items.total.interest + item.interest">{{item.interest}}%</td>
    </tr>
    <tr>
      <td>Total</td>
      <td>{{items.total.numberofyears}}</td>
      <td>{{items.total.amount}}</td>
      <td>{{items.total.interest}}%</td>
    </tr>
 </table>
18
Wawy

Faites le calculateur dans le contrôleur, vous pouvez alors ajouter <tr ng-if="$last"> </tr> dans ng-repeat et afficher le résultat final.

contrôleur e.x - simple

function sum (object) {
    var data = object;
    var tmpSum

     for (var i in object){
      tmpSum =+ object[i].value;
    }

    $scope.sum = tmpSum 
};

voir e.x

<tr ng-if="$last">{{sum}} </tr>

1
bmazurek

Comme le mentionnent les commentaires, vous feriez la somme dans votre contrôleur et afficheriez la valeur ajoutée après votre répétition.

https://docs.angularjs.org/api/ng/directive/ngRepeat

La directive ngRepeat instancie un modèle une fois par élément d'une collection.

Ainsi, ng-repeat est destiné au rendu et ne serait pas l'endroit idéal pour la logique métier.

1
pherris