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
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
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
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)