如何过滤空字符串值的 ng-repeat 列表?

How to filter ng-repeat list on empty string values?

如何过滤 ng-repeat 以显示特定列字段为空字符串的所有项目?当我尝试这个时,它似乎总是给出完整的列表。我只想见id为1的人

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>

列出具有姓名的用户:

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

只需将第三个参数传递给过滤器 saying true 将执行严格检查

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

Forked JSFiddle

您可以在 'ng-repeat' 中使用 Angular 的 'filter':

// 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;
};