ke stávajícím datům ve snippetu se nic nepřipíše

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

Mám jeden veliký problém, používám nette.ajax.js

template:

<div n:snippet="photo" data-ajax-append>
	obsah
</div>

a přes javascript se tam dostanu (ajaxově)

$.get({link Homepage:default});

v presenteru mám:

 if ($this->isAjax()) {
	$this->template->photo = $this->photoRepository->Photo();
	$this->invalidateControl('photo');
}

Vše funguje jak má, firebug nepíše žádnou chybu, ale snippet se nepřipíše. Tedy myslím, že by mělo ke stávajícím hodnotám ve snippetu přibýt nová data která se nahrála ajaxem ale nestane se tak..

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

nette.ajax.js je velmi gentlemenská knihovna a nepřepisuje chování metod, které sama nedefinuje. Tudíž volání $.get funguje úplně stejně jak s doplňkem, tak bez něj, tudíž žádným snipettům či snad nekonečným snipettům nerozumí.

Je třeba volat:

$.nette.ajax({
	url: {link Homepage:default},
	type: 'get'
});
slade183
Člen | 30
+
0
-

díky mám to tak, ale pořád se nic neděje firebug hlásí chybu :

TypeError: xhr.done is not a function
xhr.done(function (payload, status, xhr) {
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

A máš tam taky jQuery?

slade183
Člen | 30
+
0
-

Jo mám jQuery JavaScript Library v1.4.3

Dám se pro přehled zdrojáky:
Presenter

public function handleRefreshPhoto()
{
    if ($this->isAjax()) {
        $this->template->photo = $this->photoRepository->Photo(2);
        $this->invalidateControl('photo');
        }
}

Javascript v layout.latte

<script type="text/javascript"src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
 <script type="text/javascript"src="{$basePath}/js/nette.ajax.js"></script>
     <script type="text/javascript" language="javascript">
         $(function () {
             $win.scroll(function () {
                 if ($win.height() + $win.scrollTop()== $(document).height()) {
                     $( "#relo" ).attr( "class", "reload" );
                         $.nette.ajax({
                            url: {link Homepage:default, do => 'refreshPhoto'},
                            type: 'get'
                        });
                 }
             });
         });
    </script>

snippet:

<div n:snippet="photo" data-ajax-append>
    {foreach $photo as $photo}
			obsah
    {/foreach}
</div>

Editoval slade183 (21. 12. 2012 16:45)

Grelek
Člen | 233
+
0
-

slade183 napsal(a):

Jo mám jQuery JavaScript Library v1.4.3

Mám pocit, že nette.ajax.js potřebuje vyšší verzi jQuery.

slade183
Člen | 30
+
0
-

Grelek napsal(a):

slade183 napsal(a):

Jo mám jQuery JavaScript Library v1.4.3

Mám pocit, že nette.ajax.js potřebuje vyšší verzi jQuery.

Díky moc ! bylo to tím…