2016-07-08 5 views
1

ich mit angular-filterAngularJS - Zählergebnisse, nachdem beide Filter und groupBy mit

Filtering Winkel bin mit und Gruppierung arbeitet. Aber ich will auch prüfen, ob die gefilterte Liste leer ist, ähnlich wie diese Frage: AngularJS - placeholder for empty result from filter

In der Probe unter I player in filteredPlayers = (players | filter:search) verwenden, um die Zählung durch filteredPlayers.length

zugreifen Wie kann ich etwas tun ähnlich für die gruppierte Liste im Beispiel?

Code:

var app = angular.module('myApp', ['angular.filter']); 
 
app.controller('myCtrl', ['$scope', function($scope) { 
 
    $scope.players = [ 
 
    {name: 'Gene', team: 'alpha'}, 
 
    {name: 'George', team: 'beta'}, 
 
    {name: 'Steve', team: 'gamma'}, 
 
    {name: 'Paula', team: 'beta'}, 
 
    {name: 'Scruath', team: 'gamma'} 
 
]; 
 
}]);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-filter/0.5.8/angular-filter.js"></script> 
 

 
<div ng-app="myApp"> 
 
    <div ng-controller="myCtrl"> 
 
    <input type="text" ng-model="search"> 
 
    <hr> 
 
    <div ng-hide="filteredPlayers.length"> 
 
     This list is empty. (this is working). 
 
    </div> 
 
    <ul> 
 
     <li ng-repeat="player in filteredPlayers = (players | filter:search)"> 
 
     player: {{ player.name }} 
 
     </li> 
 
    </ul> 
 
    <hr> 
 
    <div> 
 
     The list is empty. (this is not working - always displayed). 
 
    </div> 
 
    <ul ng-repeat="(key, value) in players | filter:search | groupBy: 'team'"> 
 
     Group name: {{ key }} 
 
     <li ng-repeat="player in value"> 
 
     player: {{ player.name }} 
 
     </li> 
 
    </ul> 
 
    </div> 
 
</div>

+0

'value.length'? Oder meinst du für alle gefilterten Spieler? – devqon

+0

Ich möchte die Anzahl der Elemente für die gesamte Sammlung, nicht für jede Gruppe. – PMBjornerud

+0

Dann kannst du genau das gleiche machen ?: '(key, value) in filteredPlayers = (players | filter: search) | groupBy: 'team'' – devqon

Antwort

0

Sie können etwas Ähnliches tun:

<ul ng-repeat="(key, value) in (filteredPlayers = (players | filter:search) | groupBy: 'team')"> 
    .. 
</ul> 

<h1>Length: {{ filteredPlayers.length }}</h1>