441 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

9voto

JellicleCat Punkte 26058

Einfachste Antwort: 2 Zeilen Code

JS (in Ihrem AngularJS-Controller)

$scope.range = new Array(MAX_REPEATS); // legen Sie MAX_REPEATS auf die maximal benötigten Wiederholungen fest, die jemals in einem einzelnen ng-repeat benötigt werden, der diese Strategie verwendet

HTML

...wo repeatCount die Anzahl der Wiederholungen ist, die an dieser Stelle angezeigt werden sollen.

8voto

Sheelpriy Punkte 1645

Angular bietet eine sehr süße Funktion namens slice.. damit kannst du erreichen, wonach du suchst. z. B. ng-repeat="ab in abc.slice(startIndex,endIndex)"

Diese Demo :http://jsfiddle.net/sahilosheal/LurcV/39/ wird dir helfen und dir zeigen, wie man diese "das Leben leichter machen" Funktion verwendet. :)

HTML:

CSS:

ul
{
list-style: none;
}
.div{
    padding:25px;
}
li{
    background:#d4d4d4;
    color:#052349;
}

ng-JS:

 function ctrlParent ($scope) {
    $scope.abc = [
     { "name": "Was wir tun", url: "/Home/AboutUs" },
     { "name": "Foto Galerie", url: "/home/gallery" },
     { "name": "Woran wir arbeiten", url: "/Home/AboutUs" },
     { "name": "Foto spielen", url: "/home/gallery" },
     { "name": "Wo", url: "/Home/AboutUs" },
     { "name": "Spielplatz", url: "/home/gallery" },
     { "name": "Was wir erreichen", url: "/Home/AboutUs" },
     { "name": "genial", url: "/home/gallery" },
     { "name": "oscar", url: "/Home/AboutUs" },
     { "name": "american hustle", url: "/home/gallery" }
    ];
}
function Main($scope){
    $scope.items = [{sort: 1, name: 'Erste'}, 
                    {sort: 2, name: 'Zweite'}, 
                    {sort: 3, name: 'Dritte'}, 
                    {sort: 4, name:'Letzte'}];
    }

6voto

DrogoNevets Punkte 1246

Hier ist eine Antwort für Angular 1.2.x

Im Grunde ist es dasselbe, mit der geringfügigen Modifikation des ng-repeat

Hier ist das Fiddle: http://jsfiddle.net/cHQLH/153/

Dies liegt daran, dass Angular 1.2 keine doppelten Werte in der Direktive erlaubt. Das bedeutet, wenn Sie Folgendes versuchen, erhalten Sie einen Fehler.

6voto

akaashanky Punkte 191

Sie können die ng-if Direktive mit ng-repeat verwenden

Also, wenn num die Anzahl der Wiederholungen des Elements ist:

3voto

Roi Punkte 1467

Für Benutzer, die CoffeeScript verwenden, können Sie eine Bereichskomprehension verwenden:

Direktive

link: (scope, element, attrs) ->
  scope.range = [1..+attrs.range]

oder Controller

$scope.range = [1..+$someVariable]
$scope.range = [1..5] # Oder einfach eine Ganzzahl

Vorlage

[ der Rest Ihres Codes ]

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