¿Cómo puedo usar ng-repeat como para en Javascript?
ejemplo:
<div ng-repeat="4">Text</div>
Quiero iterar con ng-repeat 4 veces, pero ¿cómo puedo hacerlo?
javascript
angularjs
Vural
fuente
fuente
items
...?Respuestas:
Angular viene con un filtro limitTo: limit, admite la limitación de los primeros x elementos y los últimos x elementos:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
fuente
items
Esta es la solución más simple que se me ocurrió.
<span ng-repeat="n in [].constructor(5) track by $index"> {{$index}} </span>
Aquí hay un ejemplo de Plunker.
fuente
Error: [$parse:isecfld]
Puede usar el método de corte en el objeto de matriz de JavaScript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Corto y dulce
fuente
item in items|limitTo:4
en el html:
<div ng-repeat="t in getTimes(4)">text</div>
y en el controlador:
$scope.getTimes=function(n){ return new Array(n); };
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
EDITAR:
con angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
fuente
t in [1,2,3,4]
ot in 'aaaa'
etc :)[1,2,3,4]
... Qué solución tan pésima estaLa respuesta dada por @mpm no funciona, da el error
Para evitar esto junto con
utilizar
Me gusta esto
fuente
Para repetir 7 veces, tratar de utilizar un una matriz con longitud = 7 , a continuación, realizar un seguimiento de que por $ índice :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
Para repetir X tiempos:
basta con sustituir el 7 por X .
fuente
Todas las respuestas aquí parecen asumir que los elementos son una matriz. Sin embargo, en AngularJS, también podría ser un objeto. En ese caso, no funcionará el filtrado con limitTo ni array.slice. Como una posible solución, puede convertir su objeto en una matriz, si no le importa perder las claves del objeto. Aquí hay un ejemplo de un filtro para hacer precisamente eso:
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; } }; });
Una vez que sea una matriz, use slice o limitTo, como se indica en otras respuestas.
fuente