Rekurzivni snippet (dynamicke pridavani polozek do tabulky)
- babcca
- Člen | 23
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
- Kdyz jsem zobrazil predchozich N' polozek, tak je nechci zobrazovat (tahat z DB) znova
- 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
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
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.
- babcca
- Člen | 23
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
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() ).