Dotaz na propagovani udalosti

manwe
Člen | 44
+
0
-

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)