2014-05-19 20 views
12

Sto provando a creare una struttura in cui ogni 7 ripetute div è inserito un div aggiuntivo. Questo div deve appartenere al genitore e non essere figlio di uno dei div ripetuti.AngularJS e ngRepeat - inserire un elemento aggiuntivo ogni n ripetizioni

Non è sufficiente cambiare classe, l'intero contenuto sarà diverso e completamente diverso. La logica ngShow verrà utilizzata con il div aggiuntivo.

Così, per esempio:

<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> 

Questo esempio utilizza un numero specifico di div, il ngRepeat potrebbe essere qualsiasi numero. E 'anche importante l'ultimo risultato della ngRepeat mette in una div aggiuntivo dopo, anche se non è un multiplo esatto di 7.

L'attuale logica ngRepeat sto usando è:

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

Ma questo non funziona correttamente poiché il div aggiuntivo viene inserito solo una volta dopo tutte le div ripetute.

aggiornamento con l'esempio di lavoro

<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> 

Questa soluzione richiede AngularJS 1.2+

risposta

13

Hai bisogno di qualcosa vicino a questo:

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

Tutte le idee di un modo che non richiede ripetere il genitore? Volevo che fosse l'ultima risorsa perché significa un sacco di cambiamenti CSS se ho bisogno di aggiungere un ulteriore div in-between! –

+2

In risposta alla mia domanda. ng-repeat-start e ng-repeat-end sembrano essere la risposta (AngularJS 1.2+). Metto ng-repeat-start sul bambino e ng-repeat-end sul bambino speciale e ho usato una variazione del ng-if come suggerito, che dà il risultato senza ripetere il genitore! –

+0

Buon lavoro! Puoi aggiornare con la tua risposta? –

Problemi correlati