Ajax a snippety – nutnost přítomnosti {block script}
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Tomáš Votruba
- Moderator | 1114
Narazil jsem teď na zvláštní věc. Při debuggování ajaxu jsem si
stáhnul aktuální sandbox a nette.ajax.js
.
Použil jsem jednoduchý test invalidace. V presenteru:
public function handleTest()
{
$this->template->value = 'ajax';
$this->redrawControl('test');
}
public function renderDefault()
{
if (! $this->isAjax()) {
$this->template->value = 'normal';
}
}
V šabloně default.latte pak:
<a n:href='test!' class="ajax">Ajax me!</a>
{snippet test}
{$value}
{/}
No a teď to zajímavé. Pokud mám v layoutu následující kód, tak vše funguje dle očekávání. Kliknu na odkaz a hodnota se změní ajaxovým požadavkem.
{block script}
<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>
<script src="{$basePath}/js/main.js"></script>
{/}
Pokud však {block}
odstraním, nic se nepřepíše:
<script src="{$basePath}/js/jquery.js"></script>
<script src="{$basePath}/js/netteForms.js"></script>
<script src="{$basePath}/js/nette.ajax.js"></script>
<script src="{$basePath}/js/main.js"></script>
Má tedy v tomto případě {block}
nějaký spešl význam? Ve
výsledném html kódu se změní jen šablony, půjde tedy o nějakou interní
věc (mohu dodat rozdíly, bude-li zájem).
Prosím vyzkoušejte, jestli nejsem někde mimo.