Název snippetu nebere proměnnou
- Damo
- Člen | 56
Přes Nittro si zavolám stránku pro překreslení snippetu.
Protože potřebuji dle id dynamicky vygenerovaného divu vložit právě obsah
do toho kterého chci, tak si posílám id v dotazu aby se mi zpátky vrátil
payload s právě se snipettem daného id.
Takže latte snippetu je
<div n:snippet="x-window-content-$id">
{$id}
<div class="wrapper">
...
ale payload mi nic nevrati, zadny snippet. Když zadam id číslo přímo do snippetu tedy
<div n:snippet="x-window-content-30">
{$id}
<div class="wrapper">
...
payload už je naplněn správně
$id je skutečně naplněno v presenteru, takto
$this->template->id = $id;
$this->postGet("this");
$this->redrawControl("x-window-content-" . $id);
Co dělám špatně? Díky
- nightfish
- Člen | 517
https://doc.nette.org/…ication/ajax#…
Dynamické snippety nelze invalidovat přímo (invalidace item-1 neudělá vůbec nic), musíte invalidovat jim nadřazený statický snippet (zde snippet itemsContainer).
- Damo
- Člen | 56
Tak ještě zpět, ačkoliv mi to funguje, tak se teď trápím s voláním Page.Open, kdy potřebuji načíst externí obsah přes nittro
Každou iteraci se v js zavolá Page.Open, ale ajax to nittro vystreli az na
poslednim, tedy nezavola např. 5 ajaxu s id 1,2,3,4,5, ale zavola jen jeden
ajax s id 5. Když to předělám do jquery $.get, tak to zafunguje, ten
vystreli těch ajaxů 5.
Nevíte jak to v Nittro pošéfovat? Nenašel jsem ve wiki nic k tomu.
{foreach $windows as $window}
...
<div id="snippet--x-window-content-{$window->id}" class="card-body overflow-auto p-0">
<p class="card-text">Loading...{$window->id}</p>
</div>
...
<script type="application/javascript">
window._stack || (window._stack = []);
window._stack.push(function(di) {
di.getService('page').getSnippet({snippet.id x-window-content-$window->id})
.setup(function(elem) {
// volam ajax pro naplnění snippetu, ale vystreli se pouze jednou
di.getService('page').open({$window->modulePath} + "?id={$window->id}", 'GET', null, { history: false });
// toto funguje
{*$.get({$window->modulePath}, {"id" : {$window->id} }, function(data) {*}
{* $(elem).html(data["snippets"]["snippet--x-window-content-{$window->id}"]);*}
{*});*}
})
.teardown(function(elem) {
});
});
</script>
{/foreach}