Wie kann ich ng-repeat wie für in Javascript?
Beispiel:
<div ng-repeat="4">Text</div>
Ich möchte 4 Mal mit ng-repeat iterieren, aber wie kann ich das tun?
items
..?
Wie kann ich ng-repeat wie für in Javascript?
Beispiel:
<div ng-repeat="4">Text</div>
Ich möchte 4 Mal mit ng-repeat iterieren, aber wie kann ich das tun?
items
..?
Antworten:
Angular wird mit einem limitTo: limit-Filter geliefert, der das Begrenzen der ersten x Elemente und der letzten x Elemente unterstützt:
<div ng-repeat="item in items|limitTo:4">{{item}}</div>
items
Dies ist die einfachste Problemumgehung, die ich mir vorstellen kann.
<span ng-repeat="n in [].constructor(5) track by $index">
{{$index}}
</span>
Hier ist ein Plunker-Beispiel.
Error: [$parse:isecfld]
Sie können die Slice-Methode im Javascript-Array-Objekt verwenden
<div ng-repeat="item in items.slice(0, 4)">{{item}}</div>
Kurz und süß
item in items|limitTo:4
im HTML:
<div ng-repeat="t in getTimes(4)">text</div>
und in der Steuerung:
$scope.getTimes=function(n){
return new Array(n);
};
http://plnkr.co/edit/j5kNLY4Xr43CzcjM1gkj
EDIT:
mit eckigen js> 1.2.x.
<div ng-repeat="t in getTimes(4) track by $index">TEXT</div>
t in [1,2,3,4]
oder t in 'aaaa'
etc :)
[1,2,3,4]
. Was für eine düstere Lösung dieses
Die Antwort von @mpm funktioniert nicht, es wird der Fehler ausgegeben
Duplikate in einem Repeater sind nicht zulässig. Verwenden Sie den Ausdruck 'track by', um eindeutige Schlüssel anzugeben. Repeater: {0}, doppelter Schlüssel: {1}
Um dies zusammen mit zu vermeiden
ng-repeat = "t in getTimes (4)"
verwenden
Track nach $ index
so was
<div ng-repeat = "t in getTimes (4) Spur nach $ index"> TEXT </ div>
Um 7 Mal zu wiederholen , versuchen Sie, ein Array mit der Länge = 7 zu verwenden , und verfolgen Sie es dann anhand des $ index :
<span ng-repeat="a in (((b=[]).length=7)&&b) track by $index" ng-bind="$index + 1 + ', '"></span>
b=[]
Erstellen Sie ein leeres Array «b»,
.length=7
setzen Sie seine Größe auf «7» und
&&b
lassen Sie das neue Array «b» für ng-repeat verfügbar sein,
track by $index
wobei «$ index» die Position der Iteration ist.
ng-bind="$index + 1"
Anzeige ab 1.
Um es zu wiederholen X Zeiten:
nur ersetzen 7 durch X .
Alle Antworten hier scheinen davon auszugehen, dass Elemente ein Array sind. In AngularJS kann es sich jedoch genauso gut um ein Objekt handeln. In diesem Fall funktioniert weder das Filtern mit limitTo noch mit array.slice. Als eine mögliche Lösung können Sie Ihr Objekt in ein Array konvertieren, wenn es Ihnen nichts ausmacht, die Objektschlüssel zu verlieren. Hier ist ein Beispiel für einen Filter, um genau das zu tun:
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;
}
};
});
Wenn es sich um ein Array handelt, verwenden Sie Slice oder LimitTo, wie in anderen Antworten angegeben.