在我当前的项目中,我有两个嵌套的 ng-repeats,其中外部 ng-repeat 提供了一个参数,内部 ng-repeat 需要过滤掉数据 + Controller 上的一些额外的自定义过滤。我想知道整个数据集概览的内部嵌套元素的总过滤计数是多少。
考虑以下精简结构:
<div ng-repeat="division in divisions">
<!-- some division related stuff like logo, name, ... comes here (header of the division) -->
<ol>
<li ng-repeat="member in members | orderBy:['position'] | filter:{divisionabbr:division.abbr} | filter:myCustomFilter"><!-- some member stuff here, like name --></li>
</ol>
<!-- some division footer stuff -->
</div>
我的问题是:如何获取过滤后的成员总数并显示在整个页面上。
另外,我希望在我的 Controller /范围上有这个计数,以便我可以将它传达给其他 Controller 。
我尝试了以下解决方案:
- > https://stackoverflow.com/a/20900403/341358 (请参阅我的评论,此计数在数据重新加载/部分数据集刷新时未正确更新)
- > https://stackoverflow.com/a/19517533/341358 (由于范围问题,不适用于嵌套的 ng-repeat)
有什么建议吗?
最佳答案
您可以创建过滤的成员对象,例如:
$scope.filteredMembers = {};
然后像这样填充它:
<div ng-repeat="division in divisions">
<!-- some division related stuff like logo, name, ... comes here (header of the division) -->
<ol>
<li ng-repeat="member in filteredMembers[division] = (members | orderBy:['position'] | filter:{divisionabbr:division.abbr} | filter:myCustomFilter)"><!-- some member stuff here, like name --></li>
</ol>
<!-- some division footer stuff -->
</div>
之后,只需遍历 filteredMembers
并对它们的长度求和。因为它在范围内,所以您也可以在 Controller 中使用它。
没有简单/原生的方法来做到这一点。
关于javascript - 计算嵌套的 ng-repeats 总数并更新 angularjs 中的多个 Controller /模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199907/