Im obecnie pracuje nad kodem, aby osiągnąć coś takiego jak ng-repeat w kanciastym. Zasadniczo pętla for w html. kod przyjmuje każdy element z klasą "loop" i przetwarza ją z informacjami podanymi za pomocą atrybutu "info". Oto kod: HTMLOsiągnięcie funkcji podobnej do powtarzania ng-repeat w 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);
});
Teraz mam również funkcję do zastąpienia - zmienna - z numerami.
Wszystko działało idealnie, ale gdy pętle są zagnieżdżone tj
<div class="loop" data-info="i in 1 to 10">
<div class="loop" data-info="j in 1 to 10">
-j-
</div>
</div>
nie robi praca na zagnieżdżonych pętli, tj -J- robi się wymienić z numerami. Nie wiem, dlaczego tak się dzieje, każda pomoc jest doceniana.
'info' jest nieprawidłowy atrybut. Nie stosuj tych samych * błędów *, zamiast tego użyj "danych-informacji". –
@Roko dziękuję za wskazanie błędu, będę edytować pytanie od razu – decatron
Tak, zagnieżdżone pętle, wewnętrzna działa 'j' razy w jednym' i'. Zasadniczo powinieneś najpierw sprawdzić, czy jakikolwiek element "data-info" ma inne "dane-informacje" dzieci i działać odpowiednio. '$ (this) .html (printed);" zniszczy zawartość podrzędną przy pierwszej iteracji elementu .each(). Oznacza, że wewnętrzny plik '.loop' jest zniszczony/zastąpiony i nie jest dostępny w pamięci podręcznej DOM w tym momencie. –