Angular proporciona cierto soporte para un bucle for utilizando números dentro de sus directivas HTML:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Pero si su variable de alcance incluye un rango que tiene un número dinámico, deberá crear una matriz vacía cada vez.
En el controlador
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
En el HTML
<div data-ng-repeat="i in range">
do something
</div>
Esto funciona, pero es innecesario ya que no utilizaremos la matriz de rango en absoluto dentro del bucle. ¿Alguien sabe de establecer un rango o un valor regular para el valor mínimo / máximo?
Algo como:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
angularjs
angularjs-ng-repeat
Matsko
fuente
fuente
Respuestas:
Ajusté esta respuesta un poco y se me ocurrió este violín .
Filtro definido como:
Con la repetición utilizada así:
fuente
Se me ocurrió una versión aún más simple, para crear un rango entre dos números definidos, por ejemplo. 5 a 15
Ver demostración en JSFiddle
HTML :
Controlador :
fuente
var a; void 0 === a
"verdaderamente" indefinido.Nada más que Javascript simple (ni siquiera necesita un controlador):
Muy útil al maquetas
fuente
Referencing "constructor" field in Angular expressions is disallowed! Expression: [].constructor(10)
. Tal vez eso estaba funcionando en una versión anterior de Angular o estoy haciendo algo mal.[].slice.constructor
, por ejemplo , el acceso a laFunction
evaluación de código).Se me ocurrió una sintaxis ligeramente diferente que me conviene un poco más y también agrega un límite inferior opcional:
que puedes usar como
o
fuente
$digest
iteraciones cuando usa un valor de ámbito, es decirng-repeat="n in [1, maxValue] | makeRange"
:?Para aquellos nuevos en angularjs. El índice se puede obtener usando $ index.
Por ejemplo:
Lo cual, cuando esté usando el práctico filtro de Gloopy, imprima:
haga algo número 0
haga algo número 1
haga algo número 2
haga algo número 3
haga algo número 4
haga algo número 5
haga algo número 6
haga algo número 7
haga algo número 8
hacer algo número 9
fuente
do something number {{n}}
también sería suficiente.Una forma corta de hacerlo sería utilizar el método _.range () de Underscore.js. :)
http://underscorejs.org/#range
fuente
Yo uso mi
ng-repeat-range
directiva personalizada :y el código html es
o simplemente
o incluso simplemente
o solo
fuente
element.attr('ng-repeat', 'n in [' + rangeString + ']');
no funciona ...La solución más simple sin código era iniciar una matriz con el rango, y usar el $ index + por mucho que quiera compensar:
fuente
Definición del método
El siguiente código define un método
range()
disponible para todo el alcance de su aplicaciónMyApp
. Su comportamiento es muy similar alrange()
método Python .Uso
Con un parámetro:
0, 1, 2,
Con dos parámetros:
1, 2, 3, 4,
Con tres parámetros:
-2, -1.5, -1, -0.5, 0, 0.5,
fuente
Puede usar filtros 'after' o 'before' en el módulo angular.filter ( https://github.com/a8m/angular-filter )
HTML:
resultado: 5, 6, 7, 8, 9, 10
fuente
Sin ningún cambio en su controlador, puede usar esto:
¡Disfrutar!
fuente
Respuesta más corta: 2 líneas de código
JS (en su controlador AngularJS)
HTML
... dónde
myCount
está el número de estrellas que deberían aparecer en esta ubicación.Puede usar
$index
para cualquier operación de seguimiento. Por ejemplo, si desea imprimir alguna mutación en el índice, puede poner lo siguiente endiv
:fuente
Usando UnderscoreJS:
Si aplica esto
$rootScope
, estará disponible en todas partes:fuente
Muy simple:
fuente
Hola, puedes lograr esto usando html puro usando AngularJS (¡NO se requiere directiva!)
fuente
Establecer alcance en el controlador
Establecer repetición en archivo de plantilla HTML
fuente
Una mejora a la solución de @ Mormegil
uso
3 2 1 0 -1 -2 -3
-3 -2 -1 0 1 2 3
0 1 2 3
0 -1 -2 -3
fuente
Intenté lo siguiente y funcionó bien para mí:
Angular 1.3.6
fuente
Tarde a la fiesta. Pero terminé haciendo esto:
En tu controlador:
HTML:
fuente
Esta es la respuesta mejorada de jzm (no puedo comentar más, comentaría su respuesta porque incluyó errores). La función tiene un valor de rango de inicio / fin, por lo que es más flexible y ... funciona. Este caso particular es para el día del mes:
fuente
Agité esto y vi que podría ser útil para algunos. (Sí, CoffeeScript. Demandarme).
Directiva
Usar:
HTML
¿Puede esto ser más simple?
Tengo cuidado con los filtros porque a Angular le gusta reevaluarlos sin una buena razón todo el tiempo, y es un gran cuello de botella si tienes miles de ellos como yo.
Esta directiva incluso observará los cambios en su modelo y actualizará el elemento en consecuencia.
fuente
Si desea lograr esto en html sin ningún controlador o fábrica.
fuente
Supongamos que
$scope.refernceurl
es una matriz entoncesfuente
Esta es la variante más simple: solo use una matriz de enteros ...
fuente