我想通过不显示相应用户ID的消息来过滤msgs数据。在下面的示例中,它仅显示Paul(用户ID:11)和Kate(用户ID: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。