我想过滤我的队伍,并显示每支球队的所有球员,但如果球队的名称是相似的。出现了“团队测试”和“团队测试”重复问题。两队都有球员..。
下面是示例代码:https://jsfiddle.net/lukasz9999/qpqsuvc5/1/
我认为问题在于过滤方法。
<div ng-repeat="playerPerTeam in playersToFilter() | filter:filterTeams">
<b>{{playerPerTeam.team}}</b>
<li ng-repeat="player in players | filter:{team: playerPerTeam.team} | filter:searchFilter">{{player.name}}</li>
</div>
$scope.players = [{name: 'Gene', team: 'team alpha'},
{name: 'George', team: 'team beta'},
{name: 'Steve', team: 'team gamma'},
{name: 'Paula', team: 'team beta'},
{name: 'Paula2', team: 'team beta z'},
{name: 'Scruath of the 5th sector', team: 'team gamma'}];
var indexedTeams = [];
$scope.playersToFilter = function() {
indexedTeams = [];
return $scope.players;
}
$scope.filterTeams = function(player) {
var teamIsNew = indexedTeams.indexOf(player.team) == -1;
console.log("nt "+teamIsNew)
if (teamIsNew) {
indexedTeams.push(player.team);
}
return teamIsNew;
}
名称: Paula2应该只在"team z“中,但也应该在"team”中。
谢谢你的建议
发布于 2016-02-23 11:50:14
将true放在filter语句之后就可以了。所以,
filter:{team: playerPerTeam.team}应该是
filter:{team: playerPerTeam.team}:true为了完全匹配。https://docs.angularjs.org/api/ng/filter/filter
你可以看到柱塞
发布于 2016-02-23 10:39:58
您必须在所使用的ng-重复=“”结尾使用track by $index。
通过这样做,角用数组中的索引来识别元素,而不是它们的值。
示例:
ng-repeat="playerPerTeam in playersToFilter() | filter:filterTeams track by $index"
https://stackoverflow.com/questions/35575062
复制相似问题