Ž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 | 8218
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 | 8218
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 ;)