Hodnota persistentní proměnné v konstruktoru komponenty

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

Mám nějakou komponentu a v ní persistentní proměnnou. V této komponentě vytvářím objekt, který je v konstruktoru závislý na této proměnné. Kde mám tento objekt vytvořit? V konstruktoru komponenty ještě nemám hodnotu persistentní proměnné k dispozici a vytvářet objekt v render metodě je trošku pozdě. ( Můžu na to použít metodu attached ? )

romansklenar
Člen | 655
+
0
-

Vzpomněl jsem si, že jsem něco takového řešil v DataGridu. Můžeš to udělat už v loadState, ale pokud po inicializování objektu komponenty chceš nastavit jinou než výchozí hodnotu toho persistentního parametru, nesmíš v konstruktoru komponenty předat její name a parent a připojit ji do stromu komponent (tak jak to dělá AppForm), loadState se volá tehdy, kdy je komponenta připojena do stromu komponent, takže by tvůj parametr měl v loadState výchozí hodnotu a kdyby jsi ho pak při definici v továrničce změnil (poté co už jsi komponentu připojil), tak by se to neprojevilo včas na tom objektu, který chceš vytvářet. Komponenty potom připojíš do stromu komponent explicitně voláním addComponent na jejím rodiči.

Atteched by se teoreticky na to dal taky použít a připadá mi to i jednoduchší.