nette vs ajax: jak spravne invalidovat?
- vlkodlak
- Člen | 175
zdravím,
možná nesprávně rozumím věci, ale má očekávaní pokud na stránce mám snippet a php time provedu jednoduché navýšení počitadla a invalidaci toho snippetu tak změní se pouze počitadlo nikoliv značka time()
chápu když dam refreš cele stránky tak time se mi změní, ale když dam navýšit jen počitadlo se má změnit jen počitadlo?
defaul.latte
{block content}
<p>This is an AJAX counter. <a class="ajax" n:href="count!">Click here!</a></p>
{snippet pocitadlo}
<p><strong>{$counter}</strong></p>
{/snippet}
time {$cas}
homepresenter.php
namespace App\Presenters;
use Nette;
final class HomepagePresenter extends Nette\Application\UI\Presenter
{
/** @persistent */
public $counter = 0;
public function handleCount()
{
$this->template->counter = $this->counter++;
if ($this->isAjax())
{
$this->redrawControl('pocitadlo');
}
}
public function renderDefault()
{
$this->template->counter = $this->counter;
$this->template->cas = time();
}
}
Editoval vlkodlak (28. 4. 2021 1:35)
- David Matějka
- Moderator | 6445
chápu když dam refreš cele stránky tak time se mi změní, ale když dam navýšit jen počitadlo se má změnit jen počitadlo?
ano, přesně tak. při tom ajaxovém požadavku vrátí server akorát tu část uvnitř invalidovaného snippetu.
O tom, jak snippety fungují, jaké jsou tam problémy atd, jsem mluvil před pár lety na posobotě: https://www.youtube.com/watch?…
- Ondřej Kubíček
- Člen | 494
samozřejmě, že jen počítadlo, protože je obalene v tom snippetu „pocitadlo“ a to překresluješ. Jinak moc nechápu co je za problém, pokud chceš překreslovat i $cas, dej ho do toho snippetu, připadně do jiného a překresluj i ten
- vlkodlak
- Člen | 175
David Matějka napsal(a):
chápu když dam refreš cele stránky tak time se mi změní, ale když dam navýšit jen počitadlo se má změnit jen počitadlo?
ano, přesně tak. při tom ajaxovém požadavku vrátí server akorát tu část uvnitř invalidovaného snippetu.
O tom, jak snippety fungují, jaké jsou tam problémy atd, jsem mluvil před pár lety na posobotě: https://www.youtube.com/watch?…
bohužel, přednáška moc ozřejmění nevnesla … proč / jak udělat, aby se po kliku překreslilo jen počitadlo a ne také i čas
- vlkodlak
- Člen | 175
Ondřej Kubíček napsal(a):
samozřejmě, že jen počítadlo, protože je obalene v tom snippetu „pocitadlo“ a to překresluješ. Jinak moc nechápu co je za problém, pokud chceš překreslovat i $cas, dej ho do toho snippetu, připadně do jiného a překresluj i ten
to je to, že na stránce je snippet u počitadla a zobrazení casu. když v čase nula kliknu na tlačítko počitadla tak se mi navýší. pak je volán povel překresli, jen ten snippet a zobraz aktuální počitadlo, ale dojde k překreslení i jiného prvku … casu na stránce, který má zůstat ve výchozím zobrazení tj „case nula“. Jak dosáhnout navýšení jen počitadla a ne změny hodnoty času na stránce?
- vlkodlak
- Člen | 175
Felix napsal(a):
Treba by ti mohla pomoc ukazka.
děkuji dle ukázky to vypadá, že by to mohlo byt ono
- David Matějka
- Moderator | 6445
A opravdu se ti ten request provádí ajaxem? Máš jej správně inicializovaný?