0

ユニークなチームに所属する選手のリストがあります。ボタンでトリガーされるフィルターを作成したいと思います。つまり、ユニオンリストを作成する2つのチームによってリストをフィルターします。

"Players": [
  {
    "Name": "Aron Baynes",
    "TeamName": "San Antonio Spurs",
    "TeamID": "4fd03d4e1c73bc0a74b81f24",
   },
  {
    "Name": "Michael Jordan",
    "TeamName": "Chicago Bulls",
    "TeamID": "4fd03d4e1c73bc0a74b81f18",
  },
  {
    "Name": "Tim Duncan",
    "TeamName": "Los Angeles Lakers",
    "TeamID": "4fd03d4e1c73bc0a74b81f11",
  },
  {
    "Name": "Stephen Jackson",
    "TeamName": "Miami Heat",
    "TeamID": "4fd03d4e1c73bc0a74b81f15",
  }]

私はAngularが初めてなので、Webを検索する4つの方法を思いつきましたが、どちらもうまくいきませんでした.HTMLにはありません. 2 人のプレーヤー (Jordan と Jackson) は、クエリのように統合リストの上の Json を使用して、シカゴまたはマイアミのチームを持つすべてのプレーヤーを取得します。カスタムフィルターを作成する必要があることは知っていますが、一度作成すると、ボタンからどのように呼び出して ng-repeat に影響を与えることができますか? ボタンは、ホーム チームとアウェイ チームの情報を提供できます。

4

1 に答える 1

1

で使用できる 2 つのスコープ アイテムを作成する必要がありますng-repeat | filter。ボタンをクリックすると、ng-clickこれらのscope値を設定できます。

<ul>
    <li ng-repeat="player in players | filter:filterFunction">{{player.Name}}</li>
</ul>
<button ng-click="setTeams('Chicago Bulls', 'Miami Heat')">Click</button>
<button ng-click="setTeams('', '')">Reset</button>


$scope.setTeams = function (homeTeam, awayTeam) {
    $scope.homeTeam = homeTeam;
    $scope.awayTeam = awayTeam;
};
$scope.filterFunction = function (item) {
    if ($scope.homeTeam && $scope.awayTeam) {
        if (item.TeamName == $scope.homeTeam || item.TeamName == $scope.awayTeam) {
            return item;
        }
    } else {
        return item;
    }
};
于 2013-05-15T18:59:12.840 に答える