Životní cyklus Controlu?

- zaxeeq
- Člen | 17
Zdravíčko, existuje něco jako životní cyklus Controlu? Tvořím Control který kromě jiného obsahuje AppForm a netuším ve které chvíli bych ten form měl vytvořit – funkční je to jen když jej vytvořím v konstruktoru, což mě nepříjde příliš košer. Jediné co vypadá pro daný účel použitelně je ComponentContainer::createComponent(), což taky vypadá podezřele ;) Přehlédnul jsem něco nebo to dělám úplně blbě? :)

- kravčo
- Člen | 721
zaxeeq napsal(a):
Zdravíčko, existuje něco jako životní cyklus Controlu? Tvořím Control který kromě jiného obsahuje AppForm a netuším ve které chvíli bych ten form měl vytvořit – funkční je to jen když jej vytvořím v konstruktoru, což mě nepříjde příliš košer. Jediné co vypadá pro daný účel použitelně je ComponentContainer::createComponent(), což taky vypadá podezřele ;) Přehlédnul jsem něco nebo to dělám úplně blbě? :)
Životný cyklus v podobnom zmysle ako má prezenter nie. Napríklad o zachytenie signálu sa stará prezenter – ten ho odovzdá komponentu (kľudne i samému sebe), ktorý je jeho príjemcom.
Vytvorenie AppFormu v konštruktore je jedna z možností, z hľadiska
optimálneho využitia zdrojov je ale ideálna práve tebou spomínaná
továrnička createComponent(). Tá vytvorí AppForm len
v prípade, že bude potrebný – teda ak ho Control z nejakého dôvodu
potrebovať nebude, vôbec sa nebude vytvárať.
Ako inšpiráciu na obsah továrničky ponúkam jeden nedávny príspevok.

- David Grudl
- Nette Core | 8285
Vlastně i ten Control malý životní cyklus má. V metodách
attached() a detached() lze detekovat, kdy byl
připojen nebo odpojen od presenteru nebo formuláře.

- kravčo
- Člen | 721
David Grudl napsal(a):
Vlastně i ten Control malý životní cyklus má. V metodách
attached()adetached()lze detekovat, kdy byl připojen nebo odpojen od presenteru nebo formuláře.
To áno, ale tieto metódy považujem skôr za obsluhu udalostí.
Ja to chápem tak, že mám Presenter::run(), ktorý spúšťa
cyklus, pričom tento môžu ľubovoľne prelínať
udalosti Presenter::attached() a Presenter::detached()
v prípadoch, že v metódach cyklu sa pracuje so stromom komponentov.
Tým pádom nemá Control životný cyklus, má len obsluhu udalostí, ktorú Presenter od neho samozrejme dedí.
Edit: vlastne sa divím, prečo sa tie metódy nevolajú
onAttach() a onDetach()
Editoval kravco (6. 2. 2009 1:28)

- David Grudl
- Nette Core | 8285
Protože formát onXyz používá Object pro pole handlerů
obsluhujících událost, takže by se to pletlo. Kurnik, musím jít spát, za
tři hodiny stávám a jdu školit ;)