render pred vykonanim handle
- poliak9
- Člen | 10
Dobrý den,
mam takový problém, že když ajaxem zavolám handle, kde uložím data
přes rest api a pak redrawnu snippet, změny se někdy neprojeví.
Konkrétně mam seznam, kde je poslední položka „nová“ na přidávání.
Pokud položku přidám/smažu, zavolá se ajaxem handle, kde se jen pošle
přes rest api dotaz a pak se invaliduje snippet obsahujici ten seznam. Když se
ajax dokončí, občas se stane že se nepošle nový seznam, ale vyrenderuje se
seznam ještě před změnou.
Zkoušel jsem dát do handlu sleep třeba na sekundu před invalidací snippetu,
jestli to není chybou databáze, ale to nepomohlo.
Je to jak kdyby se handle dělal paralelně s(/po) renderem místo před a nevím kde mam hledat chybu.
Děkuju za rady
Edit: většinou pokud se to „zasekne“ ale pak smažete další položku, už se to „protrhne“ a funguje to normálně, že se seznam už překresluje správně rovnou dokud se to nerefreshne, nebo nenačte celá stránka znovu.
<?php
public function handleKontaktFirma($zamestnanec, $zakaznik) {
$res = $this->kontakty->vytvorVazbuFirma($zamestnanec, $this->getContext()->parameters['params']['vazbaTechnikFirmaTag'], explode(":",$zakaznik)[0]);
$this->template->vazbyList=$this->createFromTechnik($zamestnanec);
$this->redrawControl("vazby");
}
?>
<script>
function kontaktFirma(zamestnanec, tis) {
$.nette.ajax({
url: {link kontaktFirma!,''=>''} + "&zamestnanec=" + $("#" + zamestnanec).val() + "&zakaznik=" + encodeURIComponent($("#" + tis).val())
});
}
</script>
EDIT2: pokud si otevřu 2 okna a v jendom provedu změnu (ta se nepojeví) tak se v druhém po 1. změně projeví obě
Editoval poliak9 (1. 7. 2015 15:37)
- iguana007
- Člen | 970
Projdi si ty requesty/responses co se tam na pozadí vykonávájí, třeba tam narazíš na nějakou nesrovnalost – tipuji to na nějaký guláš v životním cyklu presenteru (https://doc.nette.org/…n/presenters#…)
- poliak9
- Člen | 10
pokud neni request ajax tak se vykoná dobře rovnou na poprvé, ale stejně
první po načtení zase nefunguje.
a podle cyklu presenteru by se měly handly vykonat před rendrem, tudíž by
tahle chyba nikdy neměla vzniknout
Edit: a adresy požadavků jsou se stejným vstupem totožné
Editoval poliak9 (1. 7. 2015 14:32)