Angularjs ng-repeat按一个属性过滤,属性重复问题
Angularjs ng-repeat filtered by one property, property duplicate issue
我想按团队过滤我的数组并显示每个团队中的所有玩家,但如果团队的名称相似,例如。出现"团队测试版"和"团队测试版Z"重复问题。球员显示在两支球队中...
下面是示例代码: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;
}
- 此代码生成以下列表:
- 阿尔法队
- 基因
- 团队测试版
- 乔治
- 宝拉
- 宝拉2
- 伽玛团队
- 史蒂夫
- 第五区
- 团队测试Z
- 宝拉2
名称:Paula2应该只在"团队beta z"中,但也在"团队测试"中。
谢谢你的任何建议
将true
放在过滤器语句之后就可以了。所以
filter:{team: playerPerTeam.team}
应该是
filter:{team: playerPerTeam.team}:true
用于完全匹配。 https://docs.angularjs.org/api/ng/filter/filter
你可以看到普朗克
您必须在您使用的 ng-repeat=" 末尾使用 track by $index
。
通过这样做,angular 使用元素在数组中的索引而不是它们的值来标识元素。
例:
ng-repeat="playerPerTeam in playersToFilter() | filter:filterTeams track by $index"
相关文章:
- 如何在Leaflet.js中按属性过滤TopoJSON功能
- Knockoutjs 模板:在通过某些属性过滤该数组后,如何将 1 个对象数组用于 2 个 DOM 元素
- 按对象属性过滤对象的角度
- Angularjs ng-repeat按一个属性过滤,属性重复问题
- ng重复 按深层属性过滤
- 培根.js如何基于另一个属性过滤事件流
- jQuery - 使用类属性过滤
- 按对象的属性过滤对象的 JavaScript 数组并删除重复项
- Knockout-通过多个对象属性过滤可观测阵列中的对象
- 在Angularjs应用程序中,使用嵌套对象属性过滤ng repeat不起作用
- 如何通过按钮数据属性过滤JSON文件
- 通过数组中对象内的对象属性过滤对象数组
- 基于JavaScript中嵌套的属性过滤出数组
- js查询模型通过集合属性过滤
- 如何在node.js中使用属性过滤Json数据?
- 根据data-*属性过滤选择选项
- 在Angularjs中通过对象属性过滤
- Ng-repeat -通过对象's常量属性过滤出不同的值
- 用外部的ng-repeat's object属性过滤嵌套的ng-repeat
- 如何在JavaScript中高效地合并两个对象数组,并按属性过滤重复项