435 Stimmen

Möglichkeit, ng-repeat eine festgelegte Anzahl von Malen zu wiederholen, anstatt über ein Array zu wiederholen?

Gibt es eine Möglichkeit, eine definierte Anzahl von Malen ng-repeat anstatt immer über ein Array zu iterieren?

Zum Beispiel möchte ich unten, dass das Listenobjekt 5 Mal angezeigt wird, wobei $scope.number gleich 5 ist und die Nummer jedes Listenobjekts erhöht wird, also 1, 2, 3, 4, 5

Gewünschtes Ergebnis:

   1
   2
   3
   4
   5

590voto

Dan Punkte 54881

Aktualisierung (25.09.2018)

Neuere Versionen von AngularJS (>= 1.3.0) ermöglichen es Ihnen, dies nur mit einer Variablen zu tun (keine Funktion erforderlich):

    {{ $index+1 }}

$scope.number = 5;

Dies war zum Zeitpunkt der ersten Fragestellung nicht möglich. Dank an @Nikhil Nambiar aus seiner Antwort unten für diese Aktualisierung


Original (29.05.2013)

Zurzeit akzeptiert ng-repeat nur eine Sammlung als Parameter, aber Sie könnten dies tun:

    {{ $index+1 }}

Und irgendwo in Ihrem Controller:

$scope.number = 5;
$scope.getNumber = function(num) {
    return new Array(num);   
}

Dies würde es Ihnen ermöglichen, $scope.number nach Belieben zu ändern und trotzdem die gewünschte Bindung beizubehalten.

Bearbeiten (06.01.2014) -- Neuere Versionen von AngularJS (>= 1.1.5) erfordern track by $index:

    {{ $index+1 }}

Hier ist ein Fiddle mit ein paar Listen, die dieselbe getNumber Funktion verwenden.

144voto

akonsu Punkte 27382

Du kannst das tun:

  ...

93voto

Polaris878 Punkte 36249

Hier ist ein Beispiel, wie Sie dies tun könnten. Beachten Sie, dass ich von einem Kommentar in den ng-repeat-Dokumenten inspiriert wurde: http://jsfiddle.net/digitalzebra/wnWY6/

Beachten Sie die ng-repeat-Direktive:

        {{$index + 1}}

Hier ist der Controller:

function TestCtrl($scope) {
    $scope.range = function(n) {
        return new Array(n);
    };
};

84voto

jeffmayeur Punkte 1008

Ich denke, dieses jsFiddle aus diesem Thread könnte das sein, wonach du suchst.

       {{item.name}}

64voto

nik Punkte 2455

Ein einfacherer Ansatz wäre (als Beispiel für 5 Mal):

       ...

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X