2014-12-07 634 views
1

我想通过不显示某些相应用户标识的消息来筛选邮件数据。在下面的例子中,它只显示来自Paul的消息(userid:11)& Kate(userid:12)。Angularjs:在ng-repeat中筛选多个条件

我想这样做是为了过滤不仅仅是一个userid更多。例如:

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

它应该只显示来自userid 12(在这种情况下)的消息。

Plunker: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> 

回答

3

你是走了一半。你只需要添加一个过滤器来取出不需要的用户标识符。

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

+0

完美!非常感谢! – 2014-12-07 18:15:11