Angular gir noe støtte for en for-løkke ved bruk av tall i HTML-direktivene:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Men hvis omfangsvariabelen din inkluderer et område som har et dynamisk nummer, må du opprette et tomt array hver gang.
I kontrolleren
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
I HTML
<div data-ng-repeat="i in range">
do something
</div>
Dette fungerer, men det er unødvendig siden vi ikke vil bruke rekkeviddearrayet i det hele tatt i løkken. Er det noen som vet om å sette et område eller en vanlig for min / maks verdi?
Noe sånt som:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
Jeg justerte dette svaret litt og kom opp med [denne fela][2].
Filter definert som:
var myApp = angular.module('myApp', []);
myApp.filter('range', function() {
return function(input, total) {
total = parseInt(total);
for (var i=0; i<total; i++) {
input.push(i);
}
return input;
};
});
Med gjentakelsen brukt slik:
<div ng-repeat="n in [] | range:100">
do something
</div>
Jeg kom opp med en litt annen syntaks som passer meg litt mer og legger til en valgfri nedre grense også:
myApp.filter('makeRange', function() {
return function(input) {
var lowBound, highBound;
switch (input.length) {
case 1:
lowBound = 0;
highBound = parseInt(input[0]) - 1;
break;
case 2:
lowBound = parseInt(input[0]);
highBound = parseInt(input[1]);
break;
default:
return input;
}
var result = [];
for (var i = lowBound; i <= highBound; i++)
result.push(i);
return result;
};
});
som du kan bruke som
<div ng-repeat="n in [10] | makeRange">Do something 0..9: {{n}}</div>
eller
<div ng-repeat="n in [20, 29] | makeRange">Do something 20..29: {{n}}</div>
For de som er nye i angularjs. Indeksen kan fås ved å bruke $index.
For eksempel:
<div ng-repeat="n in [] | range:10">
do something number {{$index}}
</div>
Som vil, når du bruker Gloopy's praktiske filter, skrive ut:
gjør noe nummer 0
gjør noe nummer 1
gjør noe nummer 2
gjør noe nummer 3
gjør noe nummer 4
gjør noe nummer 5
gjør noe nummer 6
gjør noe nummer 7
gjør noe nummer 8
gjør noe nummer 9