Snippet se nejspíš nepřekresluje

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
kudlajz
Člen | 70
+
0
-

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
+
0
-

$.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
+
0
-

Tak jsem si ten skript stáhl, nalinkoval, upravil svůj kód, ale stejně se pořád ta hodnota toho snippetu nemění, i když se v DB změní.

Editoval kudlajz (6. 12. 2012 17:35)

Majkl578
Moderator | 1364
+
0
-

Přijde snippet v odpovědi serveru (viz Firebug)?

kudlajz
Člen | 70
+
0
-

Ne, dostávám tento kód:

{"state":{"lang":"en","paginator-page":null}}

Má na to nějaký vliv, že se ta část tahá z DB v BasePresenteru v before/afterRender metodě?

Editoval kudlajz (6. 12. 2012 19:10)

kudlajz
Člen | 70
+
0
-

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)