¿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?
¿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?
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>
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.
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
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>
t in [1,2,3,4]o t in 'aaaa' etc :)
[1,2,3,4]... Qué solución tan pésima esta
La respuesta dada por @mpm no funciona, da el error
No se permiten duplicados en un repetidor. Utilice la expresión 'rastrear por' para especificar claves únicas. Repetidor: {0}, clave duplicada: {1}
Para evitar esto junto con
ng-repeat = "t en getTimes (4)"
utilizar
seguimiento por $ index
Me gusta esto
<div ng-repeat = "t en getTimes (4) seguimiento por $ index"> TEXTO </div>
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>
b=[]cree un Array «b» vacío,
.length=7establezca su tamaño en «7»,
&&bdeje que el nuevo Array «b» esté disponible para ng-repeat,
track by $indexdonde «$ index» es la posición de iteración.
ng-bind="$index + 1"pantalla a partir de 1.
Para repetir X tiempos:
basta con sustituir el 7 por X .
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.