Как я могу использовать ng-repeat как для в Javascript?
пример:
<div ng-repeat="4">Text</div>
Я хочу повторить итерацию с ng-repeat 4 раза, но как я могу это сделать?
Как я могу использовать ng-repeat как для в Javascript?
пример:
<div ng-repeat="4">Text</div>
Я хочу повторить итерацию с ng-repeat 4 раза, но как я могу это сделать?
items
..?
Ответы:
Angular поставляется с фильтром limitTo: limit, он поддерживает ограничение первых x элементов и последних x элементов:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Это простейший обходной путь, который я мог придумать.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Вот пример Plunker.
Error: [$parse:isecfld]
Вы можете использовать метод среза в объекте массива javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Короткое и сладкое
item in items|limitTo:4
в html:
<div ng-repeat="t in getTimes(4)">text</div>
и в контроллере:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
РЕДАКТИРОВАТЬ :
с angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]
или и t in 'aaaa'
т.д :)
[1,2,3,4]
... Какое мрачное решение это
Ответ @mpm не работает, он дает ошибку
Дубликаты в репитере не допускаются. Используйте выражение «отслеживать по», чтобы указать уникальные ключи. Повторитель: {0}, Повторяющийся ключ: {1}
Чтобы избежать этого вместе с
ng-repeat = "т в getTimes (4)"
использовать
отслеживать по $ index
как это
<div ng-repeat = "t in getTimes (4) track by $ index"> ТЕКСТ </div>
Чтобы повторить 7 раз, попробуйте использовать массив с длиной = 7 , затем отследите его по $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
создайте пустой массив «b»,
.length=7
установите его размер на «7»,
&&b
пусть новый массив «b» будет доступен для ng-repeat,
track by $index
где «$ index» - позиция итерации.
ng-bind="$index + 1"
дисплей, начиная с 1.
Повторить X раз:
просто замените 7 на X .
Все ответы здесь, похоже, предполагают, что items представляет собой массив. Однако в AngularJS это может быть и объект. В этом случае ни фильтрация с помощью limitTo, ни array.slice не будет работать. В качестве одного из возможных решений вы можете преобразовать свой объект в массив, если вы не против потерять ключи объекта. Вот пример фильтра для этого:
myFilter.filter('obj2arr', function() {
return function(obj) {
if (typeof obj === 'object') {
var arr = [], i = 0, key;
for( key in obj ) {
arr[i] = obj[key];
i++;
}
return arr;
}
else {
return obj;
}
};
});
Как только это будет массив, используйте slice или limitTo, как указано в других ответах.