Neinvalidace komponenty, prázdná odpověď
- thunderbuff
- Člen | 164
Ahoj, v aplikaci (Nette 2.1 RC) potřebuji po kliknutí na odkaz v komponentě tuto komponentu překreslit a místo odkazu vykreslit novinky z blogu.
Pokud nepoužívám ajax, komponenta se překreslí správně. Pokud použiji ajax, komponenta se nepřekreslí, v odpovědi serveru nejsou aktualizovaná data. Kde je problém?
Komponenta:
<?php
public function handleLoadBlogNews() {
$this->template->news = $this->xmlFeedReader->getEntries($this->feedURL);
Debugger::log('toto se v pořádku zalogje i při ajaxu');
$this->invalidateControl();
}
public function render() {
$this->template->setFile(__DIR__ . '/blogNews.latte');
$this->template->render();
}
?>
Šablona:
<div class="alert alert-info">
<h4>Latest blog entries</h4>
<div n:if="!isset($news)">
<a n:href="loadBlogNews!" class="ajax">load</a>
</div>
<div n:ifset="$news">
{$news}
</div>
</div>
Po kliknutí na odkaz mi ajaxem přijde odpověď bez invalidovaných dat:
{"state":[]}
Pokud v presenteru zkusím přímo v actionMetodě zavolat invalidate, odpověď je stejná.
<?php
$this['blogNews']->invalidateControl();
// pokud invaliduji celý presenter přes $this->invalidateControl(), komponenta se invaliduje, ale s ní i všechny otatní.
?>
- thunderbuff
- Člen | 164
Snipetem to funguje, ale pokud jsem dobře pochopil dokumentaci, komponenta by měla jít překreslit i bez snippetu.
//EDIT: tak jsem to přečetl pořádně a níže jsem se dočetl, že snippet být opravdu musí. Díky za nakopnutí :-)
Editoval thunderbuff (14. 9. 2014 13:59)