例如,我有person
数据,其中包含以下标记:
$scope.person.Groups = ['ios']
和标签列表:
$scope.tagsList = ['android', 'ios', 'pm']
如何仅['android', 'pm']
显示ng-repeat
?
我试过了:
<li ng-repeat="tag in tagsList" ng-show="tag != person.Groups">{{tag}}</li>
但它没有用。
我怎么才能只显示不在第二个数组中的记录?
答案 0 :(得分:0)
为您的上下文使用.indexOf()
首先,您声明$scope.person.Groups
是错误的。你一步一步走,如下。首先,您创建$scope.person
是一个对象,并将groups数组创建为该数组,如下所示
$scope.person = {};
$scope.person.Groups = ['ios'];
$scope.tagsList = ['android', 'ios', 'pm'];
并且你的html工作总是
<li ng-repeat="tag in tagsList" ng-show="person.Groups.indexOf(tag) == -1">{{tag}}</li>
for Fiddle
答案 1 :(得分:0)
您应该使用过滤器。以下是如何做到的:
<强> HTML:强>
<li ng-repeat="tag in tagsList | arrFilter: person.Groups">{{tag}}</li>
过滤强>
app.filter('arrFilter', function() {
return function(collection, person) {
var output = [];
angular.forEach(collection, function(item) {
if(person.indexOf(item) == -1) {
output.push(item);
}
})
return output;
}
})