$this->template->setFile prekresli obsah ale neaktualizuje zdrojovy kod?

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

Zdravim, snazim sa spravit aplikaciu pomocou ajaxu, no narazil som na takyto problem. zakladna sablona @layout.latte vyzera nejak takto:

<?php
{snippet script}
        <script type="text/javascript">
            Cufon.replace('.cufon', { fontFamily: 'unitee', hover: true });
            $(window).load(function(){
        	$('.images').orbit({
            		animation: 'fade',
        	});
   	    });
        </script>
{/snippet}
.
.
.
{snippet content}
	{include #content}
{/snippet}
?>

pri obsluhe ajaxoveho poziadavku robim:

<?php
if($this->isAjax()) {
	$this->template->setFile(dirname(__FILE__) . '/../templates/Default/welcome.latte');
        $this->invalidateControl('content');
        $this->invalidateControl('script');
}
?>

cim sa sice obsah prekresli, no ked si dam vypisat zdrojovy kod stranky tak nie je vobec aktualizovany…cim sa mi teda nespusti ani slajder ktory mam v scripte na zaciatku(pretoze asi nevie najst classu .images ktoru inicializujem v slajdri)…ako toto vyriesit prosim vas?

Filip Procházka
Moderator | 4668
+
0
-

Něco mi říká, že by jsi si měl nastudovat Presenter::setView(<view>)

hizo
Člen | 48
+
0
-

nechapem moc co tym chces povedat…preco sa treba odkazovat cez setView()? pri ajaxe predsa nastavim sablonu, odkial sa vezme htmlko a prekreslim snippet, co by malo aktualizovat aj kod nie? dokonca na to nepotrebujem ani renderWelcome, len nechapem preco to nerobi tak ako chcem:D

hizo
Člen | 48
+
0
-

tak som si to pozrel a skusil som to takto:

<?php
public function handleClick($page) {
        switch($page) {
            case 'vstup':  if($this->isAjax()) {
                            $this->setView('welcome');
                            $this->invalidateControl('content');
                            $this->invalidateControl('script');
                            }
                         break;
        }
    }
?>

obsah sablony welcome sa mi opat zobrazil ale zdrojovy kod je tam stale zo sablony default.latte :( skusal som to spravit aj cez akciu namiesto handle, ktora mala rovnaky kod a volala sa teda actionClick, no to zase pisalo error ze nemoze najst k tomu sablonu…cize setview ako keby nastavil obsah co sa ma zobrazit ale stalo to pozadovalo sablonu click…prosim pomozte

Jur4
Člen | 51
+
0
-

Pokud jsem to pochopil, tak jde o to, že ti to funguje (ajax se překresluje) ale když si dáš v prohlížeči „Zobrazit zdrojový kód“, tak se tam nezobrazí to co se nahrálo a změnilo ajaxem?

Jde o to, že prohlížeč ti zobrazí takový kód, který stáhl ze serveru při načtení a nejsou v něm promítnuty změny udělané javascriptem. Pokud chceš vidět kód (DOM) tak jak vypadá aktuálně, tak musíš použít třeba Firebug.

Se sliderem, je ten problém, že ho inicializuješ po načtení stránky (inicializuje se pro ty elemenenty, které jsou na stránkce v době inicializace, ale né pro ty, které se tam pak vloží třeba ajaxem). Po načtení AJAXU (změně DOM) ho musíš inicializovat znova.