Jak mogę używać ng-repeat like for w Javascript?
przykład:
<div ng-repeat="4">Text</div>
Chcę wykonać iterację z powtórzeniem ng 4 razy, ale jak mogę to zrobić?
Jak mogę używać ng-repeat like for w Javascript?
przykład:
<div ng-repeat="4">Text</div>
Chcę wykonać iterację z powtórzeniem ng 4 razy, ale jak mogę to zrobić?
items
..?
Odpowiedzi:
Angular zawiera filtr limitTo: limit, obsługuje ograniczanie pierwszych x elementów i ostatnich x elementów:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
To najprostsze obejście, jakie mogłem wymyślić.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Error: [$parse:isecfld]
Możesz użyć metody wycinka w obiekcie tablicy javascript
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Krótkie i słodkie
item in items|limitTo:4
w html:
<div ng-repeat="t in getTimes(4)">text</div>
aw kontrolerze:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
EDYTOWAĆ :
z angularjs> 1.2.x
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]
lub t in 'aaaa'
itp. :)
[1,2,3,4]
… Co za fatalne rozwiązanie
Odpowiedź udzielona przez @mpm nie działa, powoduje błąd
Duplikaty w repeaterze są niedozwolone. Użyj wyrażenia „śledź według”, aby określić unikalne klucze. Powtarzacz: {0}, zduplikowany klucz: {1}
Aby tego uniknąć wraz z
ng-repeat = "t in getTimes (4)"
posługiwać się
śledzenie według $ index
lubię to
<div ng-repeat = "t in getTimes (4) track by $ index"> TEXT </div>
Aby powtórzyć 7 razy, spróbuj użyć tablicy o długości = 7 , a następnie śledź ją według $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
utwórz pustą tablicę „b”,
.length=7
ustaw jej rozmiar na „7”,
&&b
niech nowa tablica „b” będzie dostępna dla ng-repeat,
track by $index
gdzie „$ index” jest pozycją iteracji.
ng-bind="$index + 1"
wyświetlanie począwszy od 1.
Aby powtórzyć X razy:
po prostu zastąpić 7 przez X .
Wszystkie odpowiedzi wydają się zakładać, że elementy są tablicą. Jednak w AngularJS równie dobrze może to być obiekt. W takim przypadku nie będzie działać ani filtrowanie za pomocą limitTo ani array.slice. Jednym z możliwych rozwiązań jest konwersja obiektu na tablicę, jeśli nie masz nic przeciwko utracie kluczy obiektów. Oto przykład filtru, który to robi:
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;
}
};
});
Gdy jest to tablica, użyj plastra lub limitTo, jak podano w innych odpowiedziach.