Angularjs:在ng-repeat中过滤多个条件

Angularjs: Filter multiple criteria in ng-repeat

本文关键字:条件 过滤 ng-repeat Angularjs      更新时间:2023-09-26

我想通过不显示相应用户ID的某些消息来过滤msgs数据。在下面的示例中,它仅显示来自 Paul (userid: 11) 和 Kate (userid:12) 的消息。

我想做的是过滤不止一个userid。像这样:

{userid:["!10", "!11"]};

应仅显示来自userid 12的消息(在本例中)。

普伦克 : http://plnkr.co/edit/464FVab41YoV2BGFkgWt?p=preview

$scope.msgs = [{name:"John", userid:10, text:"Hello"}, {name:"Paul", userid:11, text:"hi"}, {name:"Kate", userid:12, text:"Hey"}];
$scope.filter = {userid:"!10"};
<div ng-repeat="msg in msgs | filter:filter">
   {{msg.name}} ({{msg.userid}}) : {{msg.text}}
</div>

你已经完成了一半。您只需要添加一个过滤器来取出不需要的用户 ID。

angular.module('app', [])
    .controller('mainCtrl', function($scope) {
        
        $scope.msgs = [
            {"name":"John", "userid":"10", "text":"Hello"},
            {"name":"Paul", "userid":"11", "text":"Hi"},
            {"name":"Pete", "userid":"12", "text":"'Allo"},
        ];
                  
        $scope.idsToTakeout = ['11', '12'];
        $scope.filterOutUserIds = function(i) {
            return ($scope.idsToTakeout.indexOf(i.userid) === -1);
        };
    });
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
<div ng-app="app">
<div ng-controller="mainCtrl">
<div ng-repeat="msg in msgs | filter:filterOutUserIds">
    id: {{ msg.userid }}, message: {{msg.text}}
</div>
</div>
</div>

我还创建了一个 plunker。