加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 如何按属性过滤为空数组?

发布时间:2020-12-17 10:20:42 所属栏目:安全 来源:网络整理
导读:我有这个ng-repeat tr ng-repeat="website in websites" td{{website.url}}/td/tr 来自网站数组的每个网站对象如下所示: { url: "example.com",groups: []} 问题:如何将过滤器应用于上面的循环,以便它只显示groups属性为空数组的元素? 我试过的事情: dat
我有这个ng-repeat
<tr ng-repeat="website in websites">
    <td>{{website.url}}</td>
</tr>

来自网站数组的每个网站对象如下所示:

{
  url: "example.com",groups: []
}

问题:如何将过滤器应用于上面的循环,以便它只显示groups属性为空数组的元素?

我试过的事情:

data-ng-repeat="website in websites | filter: {groups: []}"
data-ng-repeat="website in websites | filter: !groups.length"
data-ng-repeat="website in websites | filter: groups.length === 0"

(在控制台中没有错误但过滤掉所有内容)

data-ng-repeat="website in websites | filter: {groups: ''}"

(与我想要的相反,并且仅显示组不是空数组的项目)

data-ng-repeat="website in websites | filter: {groups: null}"

(如果不使用[]我使用null来表示没有值,这可行,但它看起来非常混乱…因为我需要经常注意group属性变空,并手动将其设置为null)

我在控制器中添加了一个过滤功能:

JS:

angular.module('myApp',[])
  .controller('myController',['$scope',function($scope) {
      $scope.friends = [{
        name: 'John',phone: '555-1276',a: [1,2,3]
      },{ name: 'Mary',phone: '800-BIG-MARY',{ name: 'Mike',phone: '555-4321',a: null
      },{ name: 'Adam',phone: '555-5678',a: []
      },{ name: 'Julie',phone: '555-8765',{ name: 'Juliette',a: []
      }];

      $scope.filterFn = function(item) {
        // must have array,and array must be empty
        return item.a && item.a.length === 0;
      };

    }
  ]);

在您的模板中:

<table>
  <tr><th>Name</th><th>Phone</th><th>array len</th></tr>
  <tr ng-repeat="friend in friends | filter: filterFn">
    <td>{{friend.name}}</td>
    <td>{{friend.phone}}</td>
    <td>{{friend.a.length}}</td>
  </tr>
</table>

Modified Angular Filter doc plnkr

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读