【问题标题】:Angularjs: Filter multiple criteria in ng-repeatAngularjs:在 ng-repeat 中过滤多个条件
【发布时间】:2014-12-07 14:44:59
【问题描述】:

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

我想做的不仅仅是过滤一个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>

【问题讨论】:

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


    【解决方案1】:

    你已经成功了一半。您只需要添加一个过滤器来过滤掉不需要的用户 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多