redrawControl() neudělá nic po volání ajaxem

Koudislav
Člen | 2
+
0
-

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
+
0
-

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