如何限制我想在ng-repeat中显示的对象数量,

时间:2015-08-28 04:17:03

标签: javascript angularjs html5

这是我的数组对象:

01-543BY: Array[1]
03-45BD23: Array[1]
03-67BS50: Array[1]
06-78FR90: Array[1]
07-467BY3: Array[1]
09-23DF76: Array[1]

目前我有六个,但我只想展示4个。 这是我的重复:

<div ng-repeat="(key, item) in product.productListByCategoriesShow ">

我试过<div ng-repeat="(key, item) in product.productListByCategoriesShow |limitTo: 4 "> 但它似乎不起作用。有什么建议? THX

7 个答案:

答案 0 :(得分:2)

我会使用这个辅助过滤器来实现这样的情况:

module.filter('keys', [
    function () {
        return function (object) {
            return Object.keys(object);
        }
    }
]);

然后使用它:

<div ng-repeat="key in product.productListByCategoriesShow | keys | limitTo: 4" 
     ng-init="item = product.productListByCategoriesShow[key]">
     ...
</div>

<强>演示:

http://plnkr.co/edit/5edaa8qScyhseB0B1Z9o?p=preview

我建议在调用filter之前使用limitTo对键进行排序以保证顺序。我猜这个有角度的团队没有让limitTo处理对象,因为订单可能会不稳定?

答案 1 :(得分:0)

limitTo:{{你想要的大小}}过滤器将帮助您显示要显示的列表中的元素数量。 请查看此文档:https://docs.angularjs.org/api/ng/filter/limitTo

答案 2 :(得分:0)

你提到你已经尝试了

<div ng-repeat="(key, item) in product.productListByCategoriesShow | limitTo: 4 ">

我担心的是product.productListByCategoriesShow是要应用过滤器的数组,但有角度可能会尝试将过滤器应用到整个过滤器中。声明。你试过了吗?

<div ng-repeat="(key, item) in (product.productListByCategoriesShow | limitTo: 4)">

答案 3 :(得分:0)

不是最佳解决方案:

<div ng-repeat="(key, item) in product.productListByCategoriesShow" ng-if="$index < 4"></div>

答案 4 :(得分:0)

为什么不限制控制器中的数组?

$scope.product.productListByCategoriesShow.length = 4

答案 5 :(得分:0)

我解决了我的问题。

limitTo,不适用于对象,只适用于数组和字符串,所以我的目的是将我的对象放入数组。

所以不要这样:

01-543BY: Array[1]
03-45BD23: Array[1]
03-67BS50: Array[1]
06-78FR90: Array[1]
07-467BY3: Array[1]
09-23DF76: Array[1]

我这样做了:[Array[1], Array[1], Array[1], Array[1], Array[1], Array[1]] 使用angular.foreach和.push(仅适用于数组)将其用于数组。

所以现在我的myarray | limitTo:4完美无缺。

答案 6 :(得分:0)

如果你想根据键进行跟踪,你应该像这样使用;

<div ng-repeat="item in product.productListByCategoriesShow |limitTo: 4 track by $key ">