Как я могу использовать ng-repeat, как в Javascript?
Пример:
<div ng-repeat="4">Text</div>
Я хочу повторить с ng-repeat 4 раза, но как я могу это сделать?
Как я могу использовать ng-repeat, как в Javascript?
Пример:
<div ng-repeat="4">Text</div>
Я хочу повторить с ng-repeat 4 раза, но как я могу это сделать?
Angular поставляется с пределом предельного фильтра: он поддерживает ограничение первых элементов x и последних элементов x:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
Это простейшее обходное решение, о котором я мог подумать.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Вот пример Plunker.
Вы можете использовать метод среза в объекте массива javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Короткий сладкий
в html:
<div ng-repeat="t in getTimes(4)">text</div>
и в контроллере:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
ИЗМЕНИТЬ:
с угловыми > 1,2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
Ответ, заданный @mpm, не работает, он дает ошибку
Дубликаты в ретрансляторе не допускаются. Используйте выражение 'track by' для выражения укажите уникальные ключи. Повторитель: {0}, Дублирующий ключ: {1}
Чтобы избежать этого вместе с
ng-repeat = "t в getTimes (4)"
использовать
track by $index
как это
< div ng-repeat = "t в getTimes (4) отслеживать $Индекс" > TEXT </дел >
Чтобы повторить 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.
Все ответы здесь, похоже, предполагают, что элементы - это массив. Однако в 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, как указано в других ответах.