编程语言
首页 > 编程语言> > javascript-AngularJS:过滤ng-repeat中的子内容

javascript-AngularJS:过滤ng-repeat中的子内容

作者:互联网

这是一个示例JSON代码:

 $scope.info = [{"name":"Category1", "data":[{"name":"Item1"}, {"name":"Item2"}]},
                    {"name":"Category2", "data":[{"name":"Item3"}, {"name":"Item4"}]}];

我将其放入列表中,这要感谢ng-repeat,并使用搜索框进行过滤,我还按类别对结果进行排序:

<div ng-repeat="Cat in info">
      <h3>{{Cat.name}}</h3>
      <ul>
          <li ng-repeat="Item in Cat.data | filter:search" >
               {{Item.name}}
          </li>
      </ul>
</div>

问题是:例如,当我搜索“ Item3”时,它在Category2中显示了Item3,但是即使下面没有任何内容,仍然存在“ Category1”,因为类别没有被过滤,只有内容被过滤了.

那么我如何对AngularJS说:“如果category1的过滤内容为空,则不显示它”?

解决方法:

将过滤器的输出分配给变量,然后根据其长度隐藏标题.

<div ng-repeat="Cat in info" ng-hide="filtered.length == 0">
  <h3>{{Cat.name}}</h3>
  <ul>
      <li ng-repeat="Item in filtered = (Cat.data | filter:search)" >
           {{Item.name}}
      </li>
  </ul>
</div>

标签:angularjs,angularjs-ng-repeat,javascript
来源: https://codeday.me/bug/20191121/2055107.html