极限数组,angular

Limit array, angular

正在尝试限制数组的输出。 list 是数据对象中的数组。

<tr ng-repeat="item in data.list" ng-if=""><td>{{item.data.attribute}}</td></tr>

是否可以用 ng-repeat 来做?

首先删除 ng-if。然后使用 angular 开箱即用的 limitTo 过滤器。

ng-repeat="item in data.list | limitTo: 4 as filtered"

您也可以在控制器中使用相同的过滤器。

var limit = 5;
$scope.filteredData = $filter('limitTo')($scope.data.list)(limit);

我认为,最好的方法是使用 limitTo

<tr ng-repeat="item in data.list |limitTo:quantity"><td>{{item.data.attribute}}</td></tr>

其中 quantity 是您的限制。您也可以使用:

<tr ng-repeat="item in data.list" ng-if="$index < quantity"><td>{{item.data.attribute}}</td></tr>

但这不是最好的解决方案,因为如果它是一个大数组,这会比使用 limitToFilter 效率低,因为每个项目可能都必须被评估,另外一件事 ng-if,在这种情况下,不会渲染 $index 大于 quantity 的转发器的 DOM element。如果中继器中的 $index0, 1, or 2 or 个,则条件为真,并创建 DOM 个节点。 ng-ifng-hide 的不同之处在于元素未添加到 DOM

还有一件事,您可以在控制器中添加过滤器

.filter('limitItems', function () {/*CODE OF YOUR FILTER FUNCTION*/})