NIttro – Dynamic Remove volaný jako eventDispatcher
- Damo
- Člen | 56
Ahoj, řeším jednu věc, mám dvě komponenty, jedna vykresluje okna, druha jen jejich zkratky.
v Komponenta „okna“ mám u button close s attr data-dynamic-remove
<a n:href="close! $window->id" class="btn btn-close"
data-dynamic-remove="#{snippet.id x-window-$window->id}"
data-history="false"
data-scroll-to="false"
></a>
kdyz kliknu, tak se mi odeberte jen ta jedná položka. Což funguje
dobře.
Ale zároveň bych potřeboval odmazat i polozku zkratky. Na předání eventu
používám
$this->eventDispatcher->dispatch(new XWindowDeletedEvent($deletedWindow));
event mi prijde do komponenty, ale tam jaksi uz nezafunguje aby mi komponenta odstranila jen tu jednu polozku, vždy překlesný celou komponentu.
Příchozí event si předám do methody zde
public function refreshDeleted(XWindowDeletedEvent $data) : void {
$this->getPresenter()->postGet('this');
$this->redrawControl('dummy');
}
kdy dám jen $this->redrawControl(''); tak se mi prekreslí celá komponenta
Tohle je v te komponentě
<div
n:snippet="x-taskbar"
n:dynamic="x-task-\d+"
data-dynamic-element="a.x-task-item.nav-task.d-none.d-sm-inline-block"
class="navbar-nav x-tasks-group nittro-snippet-container"
>
{foreach $windows as $window}
<a n:snippet="x-task-$window->id"
class="x.task-item nav-task d-none d-sm-inline-block" href="#">
<img src="image/module/mcdb.svg" class="avatar img-fluid rounded-circle me-1" alt="Dashboard">
</a>
{/foreach}
</div>
kam umístit toto, v komponentě okna to mám u close buttonu, ale tady fakt nevím co s tím, v teto komponnet není nic klikacího na její odstranění.
data-dynamic-remove="#{snippet.id x-task-$window->id}"
Díky za nějakou radu.
- David Grudl
- Nette Core | 8218
Neporadím, jen chci říct, že je fajn, že nejsem jediný kdo na Štědrý večer programuje :)
- Damo
- Člen | 56
Trošku jsem postoupil, už to funguje, ale ještě to doladit.
Ono stačí k tomu close buttonu do attr data-dynamic-remove pridat dalsi
selector
takže:
<a n:href="close! $window->id" class="btn btn-close"
data-dynamic-remove="#{snippet.id x-window-$window->id}, #snippet-xTaskBar-x-task-{$window->id}"
data-history="false"
data-scroll-to="false"
></a>
ale nemůžu použít snippet.id pač tam vloží název snippetu, takže to
musím napsat natvrdo.
Nevěděl by někdo jak se odkázat na dynamicky snippet.id jiného
snippetu?
Snad to dobře popisuji :-)