【问题标题】:How to filter ng-repeat list on empty string values?如何过滤空字符串值的 ng-repeat 列表?
【发布时间】:2017-07-21 00:47:32
【问题描述】:

如何过滤 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>

【问题讨论】:

    标签: javascript angularjs angularjs-ng-repeat angular-filters


    【解决方案1】:

    你可以在'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;
    };
    

    【讨论】:

      【解决方案2】:

      列出有名字的用户:

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

      【讨论】:

        【解决方案3】:

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

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

        Forked JSFiddle

        【讨论】:

        • @Jim Peeters 有帮助吗??
        猜你喜欢
        • 1970-01-01
        • 2016-11-02
        • 1970-01-01
        • 1970-01-01
        • 2020-02-05
        • 1970-01-01
        • 2013-12-09
        • 2014-11-10
        • 1970-01-01
        相关资源
        最近更新 更多