Snippet se nejspíš nepřekresluje

- kudlajz
 - Člen | 70
 
Zdravím.
Používám tento jQuery kód:
(function poll() {
		setTimeout(function() {
			$.ajax({
				url: "/u/?do=refreshSidebar",
				dataType: "json",
				complete: poll
			});
		}, 2000);
	})();
Zajišťuje, aby se každé 2 sekundy volala metoda handleRefreshSidebar(), která vypadá takhle:
public function handleRefreshSidebar()
{
	$this->invalidateControl("messageBox");
}
Část šablony, která se má překreslovat, vypadá takhle:
{snippet messageBox}
	<a n:href="Messages:" id="messageBox">
		<span>{$new_messages}</span><br/>{_}new conversations!{/_}
	</a>
{/snippet}
A metoda, která template plní onou hodnotou $new_messages je tady:
$this->template->new_messages = $this->conversationsModel->getNewMessages($this->user->id);
Zkoušel jsem ji volat jak v beforeRender, tak v afterRender, ale bez
požadovaného efektu.
Cílem je, aby se snippet překresloval v určitém intervalu (což zajišťuje
obslužný JS výše) a pokud se objeví nové konverzace, tak by se měl
vrátit jejich počet pomocí výše uvedené metody.
Poradí mi někdo? Díky.

- Majkl578
 - Moderator | 1364
 
$.ajax nahraď za $.nette.ajax. Předpokládám, že používáš nette.ajax.js od Vojty Dobeše, pokud ne, začni. :)

- kudlajz
 - Člen | 70
 
Tak jsem se s tím setkal znovu. Mám výpis komentářu v snippetu „comments“, formulář pro přidání v „commentForm“, ale po odeslání ajaxově se neprovede překreslení ani jednoho snippetu, přitom v handle je to jasně uvedené. Ani když si otevřu Nástroje pro vývojáře a otevřu si response, tak tam není ani jeden snippet :-/ Šablonu samozřejmě plním v render metodě. Jiné snippety se překreslují v pořádku.
Editoval kudlajz (23. 1. 2013 21:12)