2016-01-25 82 views
0

我有一個屬於每個組的玩家的列表。我如何使用過濾器列出每個組的用戶? 我需要得到具有correspong團隊的輸出也算如何將數據與Angular過濾器中特定項目的數量分組?

這是我的script.js

angular.module('app',['angular.filter']) 
    .controller('MainController', function($scope) { 

    $scope.players = [ 
     {name: 'A', team: 'alpha', score: 10}, 
     {name: 'B', team: 'beta', score: 14}, 
     {name: 'C', team: 'gamma', score: 8}, 
     {name: 'D', team: 'beta', score: 28}, 
     {name: 'E', team: 'gamma', score: 7}, 
     {name: 'F', team: 'beta', score: 28}, 
     {name: 'G', team: 'beta', score: 28}, 
     {name: 'H', team: 'alpha', score: 10}, 
     {name: 'I', team: 'beta', score: 28}, 
     {name: 'J', team: 'gamma', score: 7}, 
     {name: 'K', team: 'alpha', score: 10}, 
     {name: 'L', team: 'gamma', score: 7}, 
     {name: 'M', team: 'gamma', score: 7}, 
    ]; 

}); 

這是我的html文件

<body> 
    <div ng-controller="MainController"> 
     <ul ng-repeat="(key, value) in players | groupBy: 'team'"> 
    Group name: {{ key }} 
    <li ng-repeat="player in value"> 
     player: {{ player.name }} 
    </li> 
    <li>score: {{value | map: 'score' | sum}}</li> 
     </ul> 
    </div> 
    </body> 

我需要得到包括相應的輸出隊計數爲

Group name: alpha 3 
player: A 
player: H 
player: K 
score: 30 

Group name: beta 5 
player: B 
player: D 
    . 
    . 
    . 
Group name: gamma 5 
    . 
    . 
    . 

alpha 3 beta 5 gamma 5 are the count o f項目

+0

我誤解了你的問題,但我的解決方案出了什麼問題?它確實顯示了團隊名稱後面的團隊數量。 – Jaanus

+0

你的回答是正確的Jaanus,你的解決方案是完美的,我需要它如何將它綁定到像foreach這樣的模板,如果你只是張貼給我.Sorry你的答案是完美的。 –

回答

0

只需將組的長度添加到HTML,就像這樣{{ value.length }}

<body> 
    <div ng-controller="MainController"> 
     <ul ng-repeat="(key, value) in players | groupBy: 'team'"> 
      Group name: {{ key }} {{ value.length }} 
      <li ng-repeat="player in value"> 
       player: {{ player.name }} 
      </li> 
      <li>score: {{value | map: 'score' | sum}}</li> 
     </ul> 
    </div> 
</body> 
0

你可以組數組綁定到模板之前按分數

var groupedTeams = {}; 

var teams = [ 
    {name: 'A', team: 'alpha', score: 10}, 
    {name: 'B', team: 'beta', score: 14}, 
    {name: 'C', team: 'gamma', score: 8}, 
    {name: 'D', team: 'beta', score: 28}, 
    {name: 'E', team: 'gamma', score: 7}, 
    {name: 'F', team: 'beta', score: 28}, 
    {name: 'G', team: 'beta', score: 28}, 
    {name: 'H', team: 'alpha', score: 10}, 
    {name: 'I', team: 'beta', score: 28}, 
    {name: 'J', team: 'gamma', score: 7}, 
    {name: 'K', team: 'alpha', score: 10}, 
    {name: 'L', team: 'gamma', score: 7}, 
    {name: 'M', team: 'gamma', score: 7}, 
]; 

teams.forEach(function(team){ 
    if (!(team.score in groupedTeams)) { 
    groupedTeams[team.score] = []; 
    } 
    groupedTeams[team.score].push(team); 
}); 

伊莫這是更好地保持這有點兒邏輯移出模板。

+0

它不工作KoningDavid。我是AngularJS中的新成員。請幫助我得到那個。事情是,我的問題是整個事情迭代並計算alpha,beta和gammas的數量,即3個alpha 5個beta和5個gammas。請澄清這一點。我非常喜歡你的代碼,這就是爲什麼我問。邏輯出我的template.Good請回答我.. –

相關問題