2017-07-20 104 views
1

如何过滤ng-repeat以显示某个列字段为空字符串的所有项目?当我尝试这个时,它似乎总是给出完整的列表。我只希望看到的人ID为1如何筛选空字符串值的ng-repeat列表?

Fiddlejs example

控制器:

var people = [{ 
       name: '', 
       age: 32, 
       id: 1 
      }, { 
       name: 'Jonny', 
       age: 34, 
       id: 2 
      }, { 
       name: 'Blake', 
       age: 28, 
       id: 3 
      }, { 
       name: 'David', 
       age: 35, 
       id: 4 
      }]; 

$scope.filteredPeople = $filter('filter')(people, { 
    name: '' 
}); 

$scope.people = people.slice(0); 

查看:

<li ng-repeat="p in filteredPeople"> 
    <h4>{{p.name}} ({{p.age}}) id: {{p.id}}</h4> 
</li> 

回答

2

您可以使用角的'filter''ng-repeat'

// In template: 
<li ng-repeat="p in filteredPeople | filter : filterPeople"> 
    <h4>{{p.name}} ({{p.age}}) id: {{p.id}}</h4> 
</li> 

// In controller: 
$scope.filterPeople = function(item) { 
    return !item.name; 
}; 
1

要列出名称的用户:

<li ng-repeat="p in filteredPeople" ng-if="p.name !== ''"> 
    <h4>{{p.name}} ({{p.age}}) id: {{p.id}}</h4> 
</li> 

要只列出那些没有名字的用户:

<li ng-repeat="p in filteredPeople" ng-if="p.name === ''"> 
    <h4>{{p.name}} ({{p.age}}) id: {{p.id}}</h4> 
</li> 
0

只是传递第三个参数来筛选说true将执行严格的检查

$scope.filteredPeople = $filter('filter')(people, { 
    name: '' 
}, true); 

Forked JSFiddle

+0

@Jim Peeters是否有帮助? –

相关问题