Pripojeni komponetny v render metode

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

Zdravim, da se nejak pripojit komponenta k nadrazene komponente v render metode teto nadrazene komponenty? Jde o to, ze mam nadrazenou komponentu, na kterou je napojeno mnozstvi dalsich komponent. Na zaklade ajax pozadavku pak dochazi ke zvyseni poctu komponent, ktere chci k nadrazene komponente pripojit. To uz jsem ale v render metode nadrazene komponenty a pripojeni dalsi komponenty nefunguje.

Pro nazornost, jde to takto:

  1. spoustim ajax pozadavek, ktery jde jako signal do jedne z napojenych komponent
  2. v ten okamzik se nejdrive spusti constructor nadrazene komponenty, ve kterem se provede napojeni komponent bez ohledu ale na upravy provedene pozdeji v databazi zaslanym signalem
  3. signal dorazi do jedne z napojenych komponent a provedou se zmeny v databazi
  4. vraci se html, ktere ale nereflektuje zmeny provedene signalem v databazi, protoze napojene komponenty se vytvari pred zpracovanim signalu
norbe
Backer | 405
+
0
-

V komponentě můžeš mít normálně továrničky na podkomponenty, takže v konstruktoru nemusíš vytvářet nic a nechat to na nette.

Příklad:

class Navigation extends Control {
	...
	protected createComponentSubNavigation($name) {
		...
	}
}

Šablona:

Tohle je šablona navigace, která zároveň renderuje komponentu subNavigation {control subNavigation}
Vladik_hk
Člen | 50
+
0
-

Jasne, ja vim, ja ale vytvarim ty podkomponenty dynamicky. Konkretne podle poctu komentaru na strance vytvarim momentalne pro kazdy komentar podkomponentu pomoci foreach (to se deje v konstruktoru hlavni komponenty). Problem je, ze pokud pridavam novy komentar pres signal do podkomponenty, tak ten nove pridany komentar zjistim momentalne az po te co se spusti ten konstruktor hlavni komponenty. Nestihnu pro nej tedy vytvorit podkomponentu. Rad bych tedy vytvarel podkomponety pozdeji nez v konstruktoru hlavni komponenty. Viz. ma otazka v uplne prvnim prispevku. Kazdopadne diky.