[Javascript] [AngularJS] contare opzioni selezionate di una select in un elenco ng-repeat

asevenx

Utente Attivo
7 Nov 2009
312
0
16
Salve a tutti. Sto facendo un piccolo software per apprendere AngularJS e ho creato una lista clienti tramite ng-repeat. All'interno della lista vorrei dare la possibilità di selezionare una tipologia di sconto tramite una select (che mostrerà per tutti 4 opzioni). Quando inserisco una tipologia vorrei far apparire un contatore che mi mostri a quanti clienti è stata selezionata quella tipologia di sconto. Vi mostro il codice:

Questo l'html
HTML:
<div ng-app="myApp" ng-controller="myCtrl">
    <table id="tabella">
        <tr class="heading">
            <td>Nome</td>
            <td>Ditta</td>
            <td>Tipologia</td>
        </tr>   
        <tr ng-repeat="cliente in lista | orderBy: myOrderBy  as results">
            <td>{{cliente.nome}}</td>
            <td>{{cliente.ditta}}</td>
            <td><select><option value="sconto" ng-repeat="sconto in tipologieSconti">{{sconto.tipo}}</option></select></td>
        </tr>
    </table>
</div>

e qui il controller
Codice:
var app = angular.module('myApp', []);
app.controller('myCtrl', function($scope, $http) {
    $http.get("clienti_mysql.php")
    .then(function (response) {
        $scope.lista = response.data.records;
        $scope.tipologieSconti = [
            {tipo: "10%"},
            {tipo: "20%"},
            {tipo: "50%"},
            {tipo: "75%"}
        ];
    });
});

Se ad esempio seleziono per 2 clienti il tipo 20%, vorrei avere una stringa che mi riporti appunto il contatore relativo (quindi che mostri 2). Questo per tutte le tipologie. Non so se questo è possibile in AngularJS, in caso contrario potreste dirmi come fare?

Ho provato a conteggiare ad esempio la tipologia 20%, ma ovviamente mi mostra sempre 1 perché credo prenda gli elementi dallo scope, mentre io vorrei contare le tipologie realmente selezionate.
Codice:
$scope.myFunction = function(){
    var contatore = 0;
    for(var i = 0; i < $scope.tipologieSconti.length; i++){
        var x = $scope.tipologieSconti[i];
        if(x.tipo== '20%')
            contatore++; 
    }
    return contatore;
}

GRazie mille per l'aiuto
 

Discussioni simili