如果已经在另一个列表中,如何跳过ng-repeat中的值?

时间:2015-07-14 11:18:32

标签: javascript angularjs angularjs-ng-repeat angularjs-filter

例如,我有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>

但它没有用。

我怎么才能只显示不在第二个数组中的记录?

2 个答案:

答案 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;
    }
})