Attualmente sto lavorando su un codice per ottenere qualcosa come ng-repeat in angolare. Fondamentalmente un ciclo for in html. il codice prende ogni elemento con la classe "loop" e lo elabora con le informazioni fornite tramite l'attributo "info". Ecco il codice: HTMLraggiungere la funzione di ng-repeat angolare in javascript
<div class="loop" data-info="i in 1 to 10">
-i-
</div>
Javascript
$(".loop").each(function(i){
var loop_info=$(this).attr("data-info");
var fin=loop_info.match(/(.*) in (\d+) to (\d+)/);
var variable=fin[1],
initial=fin[2],
final=fin[3];
var htm=$(this).html(),printed="";
for(j=initial;j<=final;j++){
var temp=htm;
var r=new RegExp("-("+variable+")-","g")
temp=temp.replace(r,j);
printed+=temp;
}
$(this).html(printed);
});
Ora ho incluso anche la funzione di sostituire il - variabili - con i numeri.
Tutto ha funzionato perfettamente, ma quando i loop sono annidati cioè
<div class="loop" data-info="i in 1 to 10">
<div class="loop" data-info="j in 1 to 10">
-j-
</div>
</div>
doesnt lavoro sul ciclo nidificato, cioè -J- non ottiene sostituiti con i numeri. Non so perché questo sta accadendo, ogni aiuto è apprezzato.
'info' è un attributo non valido. Non seguire gli stessi * errori *, usa invece 'data-info'. –
@Roko, grazie per aver segnalato l'errore, modificherò la domanda immediatamente – decatron
Quindi, i cicli annidati, l'interno opera in tempi 'j' in uno' i'. Quindi, in pratica, dovresti prima controllare se qualche elemento 'data-info' ha altri bambini' data-info' e agire di conseguenza. '$ (this) .html (stampato);' distruggerà il contenuto del bambino alla prima iterazione dell'elemento '.each()'. Significa che il '.loop' interno viene distrutto/sostituito e non accessibile nella cache DOM a questo punto. –