这是我的数组对象:
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
答案 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 ">