Dotaz na propagovani udalosti
- manwe
- Člen | 44
Resim problem v jedne dost specificke aplikaci, vicemene se jedna o kviz, ktery si muze admin administrovat.
Problem: potrebuju „propagovat“ do (predem nezname) komponenty udalost z jine komponenty.
Struktura komponent
-QuizRenderer
- UI Multiplier (vykresluje jednotlive "udalosti", tzn treba otazky)
- A) zdrojovy Event (napr. otazka na kterou muze uzivatel odpovedet)
- B) cilovy Event (napr. zobrazeni zadanych odpovedi)
Aplikace funguje tak, ze vlastne vsechny eventy se vykresli hned a pak se postupne odkryvaji pres javascript, takze v komponente B) kde maji byt odpovedi, jsou vlastne prazdna pole ktere se pak pres snippet prekresli s zadanymi odpovedmi.
Kdyz v A) kliknu na ulozit odpovedi, tak si je zapisu do databaze i do session pres ajax. Tady v tom momente bych potreboval dat komponente B) (ktera je ale dynamicky generovana, takze predem jeji nazev neznam) info o tom, ze uz pro ni mam odpovedi, aby invalidovala snippet a prekreslila jeho data.
Momentalne to delam tak, ze v kodu komponenty B) je javascript interval, ktery kazdych 500ms vola ajax request, ktery zjistuje, jestli v session uz jsou odpovedi pro tuhle otazku, coz je tak trochu prasarna (a na tabletech mi to z nejakeho duvodu nefunguje).
Chtel jsem to udelat tak, ze si napriklad pri vytvoreni komponenty B) zaregistruju do seznamu „odposlouchavanych“ komponent, a pak pri ulozeni odpovedi zjistim, jestli neni nejaka komponenta, ktera chce vedet odpovedi na tu danou otazku. Problem je v tom, ze jsem zjistil, ze kdyz pres ajax ukladam odpovedi z formu z komponenty A) tak kdyz si dam $presenter->getComponents(true) tak tam jsou POUZE komponenty ktere se tykaji komponenty A), nikoliv B) – coz je super z hlediska performance, nicmene v tom momente proste komponenta B) neexistuje, takze ji nemam jak dat vedet.
Nemate nejaky tip jak to udelat lip?
Diky
Editoval raddy668 (30. 1. 2018 10:20)