Angular, HTML yönergeleri içinde sayıları kullanan bir for döngüsü için bazı destekler sağlar:
<div data-ng-repeat="i in [1,2,3,4,5]">
do something
</div>
Ancak kapsam değişkeniniz dinamik bir sayıya sahip bir aralık içeriyorsa, her seferinde boş bir dizi oluşturmanız gerekecektir.
Kontrol ünitesinde
var range = [];
for(var i=0;i<total;i++) {
range.push(i);
}
$scope.range = range;
HTML içinde
<div data-ng-repeat="i in range">
do something
</div>
Bu işe yarar, ancak döngü içinde aralık dizisini hiç kullanmayacağımız için gereksizdir. Min/maks değeri için bir aralık veya normal bir ayar bilen var mı?
Şöyle bir şey:
<div data-ng-repeat="i in 1 .. 100">
do something
</div>
Bu cevabı]1 biraz değiştirdim ve [bu keman][2] ortaya çıktı.
Filtre olarak tanımlanmıştır:
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;
};
});
Tekrar bu şekilde kullanıldığında:
<div ng-repeat="n in [] | range:100">
do something
</div>
Bana biraz daha uygun olan ve isteğe bağlı bir alt sınır da ekleyen biraz farklı bir sözdizimi buldum:
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;
};
});
olarak kullanabileceğiniz
<div ng-repeat="n in [10] | makeRange">Do something 0..9: {{n}}</div>
veya
<div ng-repeat="n in [20, 29] | makeRange">Do something 20..29: {{n}}</div>
Angularjs'e yeni başlayanlar için. İndeks $index kullanılarak elde edilebilir.
Örneğin:
<div ng-repeat="n in [] | range:10">
do something number {{$index}}
</div>
Bu, Gloopy'nin kullanışlı filtresini kullandığınızda şunları yazdıracaktır:
0 numaralı bir şey yap
1 numaralı bir şey yap
2 numaralı bir şey yap
3 numaralı bir şey yap
4 numaralı bir şey yap
5 numaralı bir şey yap
6 numara bir şey yap
7 numara bir şey yap
8 numara bir şey yap
9 numaralı bir şey yap