如何显示ng-repeat的行数?

时间:2013-11-13 14:17:30

标签: angularjs

我的网页上有一个表格,其中填充了以下数据:

<tr data-ng-repeat="row in grid.data | filter:isQuestionInRange">
   <td>{{ row.problemId }}</td>
</tr>

有没有办法可以计算表格页脚中显示的行数。请注意,我希望能够显示之后的行,而不仅仅是grid.data数组中的行计数。

3 个答案:

答案 0 :(得分:22)

您可以存储过滤器的结果,然后获取其长度,例如使用results

<tr data-ng-repeat="row in results = (grid.data | filter:isQuestionInRange)">
   <td>{{ row.problemID }}</td>
</tr>
{{results.length}}

这具有仅需要运行一次过滤器的性能优势。对于在ng-repeat中需要过滤和未过滤结果的其他情况,它也很方便。

答案 1 :(得分:14)

您可以检查已过滤数组的长度,例如:

{{ (grid.data | filter:isQuestionInRange).length }}

答案 2 :(得分:0)

我建议您使用控制器中的$filter service,如this example plunk所示:

$scope.evenNumbers = $filter('filter')($scope.numbers, $scope.isEven);

在你的情况下:

var $scope.filteredRows = $filter('filter')($scope.gridData, $scope.isQuestionInRange);

这样,您只需进行一次过滤,并避免在模板中引入新的范围字段,这会使您的代码难以测试和理解。

您在模板中重复filteredRows{{ filteredRows.length }}会为您提供可见行数。