【发布时间】:2016-01-14 20:16:18
【问题描述】:
如何在以下示例中应用 NOT 过滤器?
尝试了$filter('filter')(users,{ranks: {id: '!' + '15'},true) 和$filter('filter')(users, !{ranks: {id:15}},true),但似乎没有任何效果。
这里的目的是在过滤后的数组中不获取 id = 15 的用户
控制器:
app.controller('MainCtrl', function($scope,$filter) {
$scope.users = [
{
id: 1,
name: 'John Doe',
ranks: [
{ id: 1, name: 'Admin'},
{ id: 2, name: 'Doe' }
],
},
{
id: 2,
name: 'Barbara Doe',
ranks: [ { id: 15, name: 'Wife'}, { id: 2, name: 'Doe' }],
},
{
id: 3,
name: 'Jane Doe',
ranks: [ { id: 16, name: 'Wife'}, { id: 17, name: 'Doe' }],
},
];
$scope.filter = $filter('filter')($scope.users, {ranks: {id: !15}},true);
});
HTML:
<p>HTML Filter: List of users without having a rank with id: 15</p>
<ul>
<li ng-repeat="user in users | filter:{ranks: {id: '!' + '15'}} : true">
{{ user }}
</li>
</ul>
<p>Controller Filter: List of users without having a rank with id: 15</p>
<ul>
<li ng-repeat="user in filter ">
{{ user }}
</li>
</ul>
Plunker: http://plnkr.co/edit/73lLDpn3uLHozObKn539?p=preview
【问题讨论】:
-
@Tushar 试过这个 $scope.filter = $filter('filter')($scope.users,ranks.id != 15,true);但它是无效的语法
标签: javascript angularjs filter angular-filters