2014-05-19 7 views
12

Ich versuche eine Struktur zu erstellen, in der alle 7 wiederholten divs ein zusätzliches div eingefügt wird. Dieses div muss dem Elternteil angehören und kein Kind eines der wiederholten divs sein.AngularJS und ngRepeat - jedes weitere Element wird durch ein zusätzliches Element ersetzt

Es ist nicht genug, nur die Klasse zu ändern, der gesamte Inhalt wird anders sein und völlig anders ngShow Logik wird mit dem zusätzlichen div verwendet werden.

So zum Beispiel:

<div id="parent"> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="special-child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="special-child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="child"></div> 
    <div class="special-child"></div> 
</div> 

Das Beispiel eine bestimmte Anzahl von divs verwendet, könnte die ngRepeat eine beliebige Zahl sein. Es ist auch wichtig, das letzte Ergebnis der ngRepeat, nachdem es in einem zusätzlichen div bringt, auch wenn es nicht genau ein Vielfaches von 7

Die aktuelle ngRepeat Logik Ich verwende ist:

<div id="parent"> 
    <div class="child" ng-repeat="o in data"></div> 
    <div class="special-child"></div> 
</div> 

Dies funktioniert jedoch nicht richtig, da das zusätzliche div nur einmal nach allen wiederholten divs eingefügt wird.

Aktualisierung mit Arbeitsbeispiel

<div id="parent"> 
    <div class="child" ng-repeat-start="o in data"></div> 
    <div class="special-child" ng-if="($index + 1) % 7 == 0 || $last" ng-repeat-end></div> 
</div> 

Diese Lösung erfordert AngularJS 1.2+

Antwort

13

Sie müssen etwas in der Nähe dieser:

<div ng-repeat="o in data"> 
    <div class="child"></div> 
    <div ng-if="$index % 7 == 0" class="special-child"></div> 
</div> 
+1

Irgendwelche Ideen einer Weise, die nicht erfordert das Elternteil wiederholen? Wollte das als letzten Ausweg, weil es viele CSS-Änderungen bedeutet, wenn ich ein zusätzliches div dazwischen hinzufügen muss! –

+2

In Beantwortung meiner Frage. ng-repeat-start und ng-repeat-end scheinen die Antwort zu sein (AngularJS 1.2+). Ich legte ng-repeat-start auf das Kind und ng-repeat-end auf das Spezial-Kind und benutzte eine Variation des ng-if wie vorgeschlagen, was das Ergebnis ohne Wiederholung des Elternteils ergibt! –

+0

Gute Arbeit! Können Sie mit Ihrer Antwort aktualisieren? –

Verwandte Themen