2015-05-03 68 views
2

我有一個從數據庫命名競爭提取角度濾波器對象數組中搜索

competition:[{id:1, 
       name:city marathon, 
       athletes:[{id:1, name: Ashley},{id:2, name: Jphn},{id:3, name: Kim},{id:4, name: Nick}], 
       prize[{id:1,comp_id:1,prize_num:1,athlete_id:3},{id:2,comp_id:1,prize_num:2,athlete_id:1}] }] 

我希望顯示誰贏得了珍貴的像下面

City Marathon 
Athelete: Ashley (2nd Prize), John, Kim (1st Prize), Nick 

運動員旁邊獎哪有我的數組這樣做嗎?

+0

你需要去創建自定義過濾器 –

+0

您可以加入什麼你已經試過 –

+1

許多方法可以做到這一點,都需要使用js進行某種映射或數據過濾。你的嘗試有什麼問題? – charlietfl

回答

1

以下是根據您的要求顯示結果的一種方法。看看這個plunker作爲一個工作的例子。

基本上從你在數據庫中獲得數據的方式來看,在比賽中做內部重複練習,並在內部對運動員進行重複練習。然後爲每個運動員看看他們是否有該事件的獎項。

希望這有助於和給你一個起點,您的解決方案

HTML:

<body ng-controller="MainCtrl"> 
    <div class="panel panel-default" ng-repeat="event in competitions"> 
     <div class="panel-heading"><strong>{{event.name}}</strong></div> 
     <div class="panel-body"> 
     <strong>Atheletes:</strong>&nbsp; 
     <span ng-repeat="athelete in event.athletes">{{athelete.name}} 
     <span class="text-info">{{GetPrize(event.prizes,athelete)}}</span> 
     &nbsp;</span> 
     </div> 
    </div> 
    </body> 

控制器:

app.controller('MainCtrl', function($scope) { 
    $scope.competitions = [{ 
    "id": 1, 
    "name":"City Marathon", 
    "athletes":[{"id":1, "name": "Ashley"},{"id":2, "name": "John"},{"id":3, "name": "Kim"},{"id":4, "name": "Nick"}], 
    "prizes": [{"id":1,"comp_id":1,"prize_num":1,"athlete_id":3},{"id":2,"comp_id":1,"prize_num":2,"athlete_id":1}] 
    }, 
    { 
    "id": 1, 
    "name":"5K Marathon", 
    "athletes":[{"id":1, "name": "Ashley"},{"id":2, "name": "John"},{"id":3, "name": "Kim"},{"id":4, "name": "Nick"}], 
    "prizes": [{"id":1,"comp_id":1,"prize_num":1,"athlete_id":4},{"id":2,"comp_id":1,"prize_num":2,"athlete_id":2}] 
    } 
    ]; 

    $scope.GetPrize = function(prizes,athelete){ 
    var prize_info =""; 
    for(var i=0;i<prizes.length;i++){ 
     if(prizes[i].athlete_id == athelete.id){ 
     prize_info = "("+prizes[i].prize_num+" Prize)"; 
     } 
    } 
    return prize_info; 
    } 

}) 
+0

嗨shivas,感謝您的幫助。它像魅力一樣工作。這很有用。 沒有冒犯,它是一個編程循環,但我希望通過角方式實現更短或更少的循環或無循環高效消耗,我正在學習角度。 只是打算這樣做。但無論如何感謝您的幫助。這是工作。 –

+0

使用ng-repeat是角度的方法。既然你有兩個運動員陣列和獎品,我唯一能想到的其他選擇就是使用@charlietfl建議將獎品添加到運動員對象(如果可以從後端加入)。祝你好運有角! – shivas

+0

我不能shivas,因爲還有更多的屬性這些與運動員表無關。如何角度過濾器| orderBy:條件? –