redrawControl() neudělá nic po volání ajaxem
- Koudislav
- Člen | 2
Vyřešeno, problém sedí na mé židli
Ahoj, jsem Nette panic a nevím jestli něco opomíjím při tužbě funkčního redrawControl().
Naprosto ve zkratce, v @layout.latte mám připojený
<script src="{$basePath}/js/nette.ajax.js"></script>
metody presenteru
public function renderDefault() {
$this->template->faqCategories = $this->utils->getCategories();
$this->template->editCategoryLink = $this->link('editCategory!');
if ($this->isAjax()) {
$this->redrawControl();
}
}
public function handleEditCategory($catId, $operation) {
$this->write->updateCategory($catId, $operation);
$this->template->prekresli = 'prekresli';
}
default sablona
{snippet categories}
{ifset $prekresli}{$prekresli}{/ifset}
{/snippet}
{block content}
{* {snippetArea categoriesListArea} *}
{include ../components/categories-full-list.latte}
{* {/snippetArea} *}
{dump}
{/block}
{block scripts}
{include parent}
{if $user->isAllowed('categories', 'edit')}
<script>
$('.edit-category').on('click', function(e) {
let link = $('.faq-categories').data('link');
let dataset = $(this).data();
$.nette.ajax({
type: 'GET',
url: link,
data: {
'catId': dataset.catId,
'operation': dataset.operation,
},
});
});
</script>
{/if}
{/block}
{* {/snippet} *}
categories-full-list.latte
{* {snippet categoriesList} *}
<div n:ifcontent class="faq-categories" data-link="{$editCategoryLink}">
{foreach $faqCategories as $category}
<ul>
<li>
<span n:class="$category['display'] ? active : inactive, faq-category">{$category['name']}</span>
{if $user->isAllowed('categories', 'edit')}
<div class="activate edit-category" data-cat-id="{$category['id']}" data-operation="activate"></div>
<div class="deactivate edit-category" data-cat-id="{$category['id']}" data-operation="deactivate"></div>
{/if}
{if !empty($category['children'])}
{include ../components/categories-full-list.latte, 'faqCategories' => $category['children']}
{/if}
</li>
</ul>
{/foreach}
</div>
{* {/snippet} *}
Teď už se snažím jen vykreslit proměnou $prekresli, ale nic. Zkoušel jsem všemožně různě snippety přemisťovat, uzavírat do nich více i méně, redrawControl() v presenteru s parametry i bez a nedělá nic. Metoda handleEditCategory() se volá.
Chybí mi nějaké závislosti, nebo dělám nějakou chybu, která mi uniká?
Editoval Koudislav (20. 9. 20:48)
- Koudislav
- Člen | 2
A jak to tak bývá, chyba je u tohohle počítače :D
Chtěl jsem překreslit jak {block content}, tak {block scripts}, kvůli navěšení eventu na tlačítka. Když jsem snippet přesunul do {block} namísto nad něj, začalo fungovat… Vyzkoušel jsem všechno a to nejlogičtější mě nenapadlo ;)