Rekurzivni snippet (dynamicke pridavani polozek do tabulky)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
babcca
Člen | 23
+
0
-

Ahoj,
rekneme ze mam napriklad seznam produktu, ktere chci vypsat. Bohuzel jich je hodne (M > 2N) a tak by potreboval vypsat jenom prvnich N a tlacitko pro zobrazeni dalsich N produktu po zobrazeni znovu tlacitko atp.

Toto vse by bylo dobre resit ajaxem a tedy pomoci snippetu, ale

  1. Kdyz jsem zobrazil predchozich N' polozek, tak je nechci zobrazovat (tahat z DB) znova
  2. No produkty se maji radit za ty predchozi, tedy stranka se vertikalne zvetsuje.

At se snazim sebevic, bohuzel pomoci snipetu toho dosahnout nedokazu. MA nekdo nejaky napad jak toto resit? Ve zkratce jde o ajaxove pridavani polozek do tabulky.

PS: bez snippetu za pomoci javascriptu je to jednoduche.

Petr B.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Můžeš vyzkoušet vývojovou verzi nette.ajax.js. Přidal jsem podporu pro datový atribut data-ajax-append, který stačí umístit na snippet, a nový obsah, který do něj server vrátí, nepřepíše původní, ale připojí se za již stávající.

babcca
Člen | 23
+
0
-

Hmm, koukam ze jsme meli stejny napad :), taky jsem upravil jquery.nette.js s tim ze podle nazvu snippety poznam co se s ni ma delat. Kouknu a vyzkousim tvuj doplnek.

PS: nevim jestli to v te vyvojove verzy ted je, ale je treba nacitat snippetu s javascriptem (pokud nejaka takova existuje) jako posledni.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Co tím myslíš?

babcca
Člen | 23
+
0
-

Kdyz napriklad potrebuju nabindovat udalosti na nektera data, ktera jsou obalena snippetem pokazde kdyz se nacte a nechci mit ve snippetu s daty i javascrpt.

{snippet javascript}
<script>$(„.btn“).click();</script>
{/snippet}

{snippet blok}
<input class=„btn“ />
{snippet}

Pri prvnim nacteni stranky to jde ok, ale pokud invaliduju jenom blok, potom mi prestane fungovat javascript. Tak muzu invalidovat jak blok tak i javascript. Ale problem je, ze se javascript muze nacist driv nez blok. Tedy ve chvili, kdy jeste .btn neni v DOM.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

V nette.ajax.js to lze snadno řešit pomocí extenze. Stačí javascriptový kód zaregistrovat jako rozšíření do události load a zavolá se po každém úspěšném ajaxovem požadavku znovu (a zároveň i při zavolání nette.init() ).