Avatar
saeQ
Člen
Avatar
saeQ:

Ahoj ,

mam template tag a snazim sa mu appendnut child elementy

pouzivam

getcontent("clients.json").then(function(x){
   obj = JSON.parse(x);
}).then(function(x){

   var x = createFullList(obj,docFragment);
   filtered = obj;
   aside.classList.remove("not");
   return x;
}).then(function(x){
   template   .appendChild(x);
   var clone = document.importNode(template.content, true);
   alert(clone.children.length);
   aside.appendChild(clone)
});

kde getcontent vrati obsah json file , a obj je objekt ktory ho drzi , createFullList prejde cely objekt a pre kazdy element vytvori html strukturu ktora sa appedne do html fragmentu a nasledovne sa html fragment appendne do div elementu.

Co mi robi problem je templata , ked appendnem ten div do nej , nic sa nespravi , pritom div obsahuje spravny pocet child elementov.

Je niekde kde som spravil chybu pri template? kod klasicky funguje ak to neapendnem do templaty ale do hocijakeho ineho elementu.

 
Odpovědět 18. června 17:58
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na saeQ
Taskkill:

A jsi si jistý že v template máš skutečně požadovaný element ? Zkoušel jsi ho vypsat do konzole a zkontrolovat to?

Editováno 18. června 18:13
 
Nahoru Odpovědět 18. června 18:12
Avatar
saeQ
Člen
Avatar
Odpovídá na Taskkill
saeQ:

O to ide , nic sa do templaty nehodi

 
Nahoru Odpovědět 18. června 18:39
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na saeQ
Taskkill:

A postupuješ podle nějakého návodu? Je to kód nějakého frameworku? Evidentně tam používáš nějakou custom funkci na getContent, nejspíš nějakej ajax obalenej promisou, takže přidej trochu informací a dáme to dohromady.

 
Nahoru Odpovědět 18. června 20:55
Avatar
saeQ
Člen
Avatar
saeQ:

Navod neni ziadny , funkcia getContent je basic ajax call

function getcontent(url) {
  return new Promise(function(resolve, reject) {
      var xhttp = new XMLHttpRequest();
      xhttp.open("GET", url, true);
      xhttp.onload = function() {
        if (xhttp.status == 200) {
          resolve(xhttp.response)
        } else {
          reject(Error(xhttp.responseText))
        }
      }
      xhttp.send();
    })
  }

funkcia createFullList jednoducho loopne array objektov , a pre kazdy element spravi html struturu tj div a v nom nejaky ten paragraph a appendne to to html fragmentu , v zapeti ten html fragment appendne do divu a ten div je aj returne.

 
Nahoru Odpovědět 18. června 21:46
Avatar
saeQ
Člen
Avatar
Odpovídá na Taskkill
saeQ:

nedal som odpovedat -.-

 
Nahoru Odpovědět 18. června 21:58
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na saeQ
Taskkill:

Mě přijde vesměs všecko funkční, teda na první pohled nevidím nějakou chybu, což souhlasí s tvým popisem. Takže se zaměřím na proměnnou template, očekával bych, že uvnitř proměnné template bude DOM object, je tomu skutečně tak? Když dáš console.log(tem­plate); tak co se ti zobrazi v konzoli? PS: netuším jestli konzoli používáš kdyby něco F12 a kliknout na Console

 
Nahoru Odpovědět 18. června 22:12
Avatar
saeQ
Člen
Avatar
Odpovídá na Taskkill
saeQ:

yep , ked dam

console.log(template.nodeName)

normalne vypise TEMPLATE.

Co som cital dokumentaciu , template sa nerenderuje az kym ju neinicializujes , teraz ale neviem ci sa to berie tak , ze ju inicializujes tym , ze accesnes jej child element ( v mojom pripade nema ziadne child elementy , tie chcem prave appendnut ) , alebo staci vytvorit jej obsah

Editováno 18. června 22:38
 
Nahoru Odpovědět 18. června 22:38
Avatar
Taskkill
Redaktor
Avatar
Odpovídá na saeQ
Taskkill:

Trochu jsem si nastudoval template element a myslím, že jsi to špatně pochopil. Template element funguje stejně jako template na serveru, takže do něj nic nevkladas, template v HTML kodu slouzi pro to, abys tam už na začátku vložil nějakou strukturu, pak si ji vzal za běhu, naklonoval obsah, nacpal ten obsah nekam do body a nastavil uz konkretni data, jako textový obsah, atributy a tak, takze ty nechces appendnout do template, ty chces vzit obsah template, naklonovat si ho do body, nebo do nejakyho divu a pak nastavit obsah ... takze si nejsem uplne jistej, jestli ten tvuj kus kodu, takhle dava smysl, minimalne k tomu co delas, nepotrebujes template, ta se hodi, pokud mas opakujici se treba strukturu, do ktery jen cpes data a nastavujes atributy, jako treba pro obrazky, videa, atd ... tady je super popis http://www.html5rocks.com/…ts/template/

Editováno 18. června 23:09
 
Nahoru Odpovědět 18. června 23:07
Avatar
Taskkill
Redaktor
Avatar
 
Nahoru Odpovědět 21. června 2:52
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 10.