invalidace komponenty po ajaxu – pridani/editace funguje, mazani nerefreshuje snippet

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

Zdravim, mam aplikaci kde pracuji se zaznamy v tabulce (pridani, editace, mazani). Tabulka je komponentou, bych po zmene rad obnovil.

takto mam snippet projectList (ktery refreshuji po ajaxu) a uvnitr je komponenta s tabulkou, nad kterou provadim operace

<?php
<div id="projects">

        {snippet projectList}
            {control projectList}
        {/snippet}

</div>

?>

zde mam funkci na editaci, ktera spravne zmeni data a refreshne snippet

<?php
    public function createEditTaskSubmitForm(Form $form) {
        if (!$this->isAjax()) {
            $id = $this->tasksRepository->editTask($form->getValues());
            $this->redirect('Tasks:taskDetail', $id);
        } else {
            $id = $this->tasksRepository->editTask($form->getValues());
            $this->payload->message = ('Task edited');
            $this->redrawControl('projectList');
        }
    }
?>

ale pokud se pokusim poslat signal na smazani takto, smazani se provede, ale snippet se neprekresli.

<?php
    public function handleDeleteTask() {
        $id = $this->getHttpRequest()->getPost('id_task_delete');
        $this->tasksRepository->deleteTask($id);
        $this->payload->message = ('Task deleted');
        $this->redrawControl('projectList');
    }

?>

Editaci volam javascriptem takto

<script>
            $(this).ajaxSubmit(function(payload){
                jQuery.nette.success(payload);
                n = noty({
                    text: payload.message,
                    type: 'success',
                    layout: 'topCenter',
                    timeout: 2000
                });
            });
</script>

ale na mazani nepouzim ajaxSubmit, ale takto

<script>
                $.ajax({
                    type: 'POST',
                    url: projectLink,
                    data: {
                        'id_project_delete':projectId
                    },
                    success: function(){
                        noty({
                            text: "Project deleted",
                            type: 'success',
                            layout: 'topCenter',
                            timeout: 2000
                        });
                    }
                });
</script>

Nevidite nekdo prosim chybku, proc se signal neprovede? Debuggoval jsem si kontrolu a prez isControlInvalid je po provedeni redrawControl hodnote boolean u projectList nastavena na 1

Editoval Muhahe (24. 6. 2015 17:37)

Muhahe
Člen | 79
+
0
-

Tak jsem mongol, staci do succes pridat jQuery.nette.success(payload)
Treba to aspon nekomu pomuze do budoucna

<script>
                    success: function(payload){
                        jQuery.nette.success(payload);
                        noty({
                            text: "Task deleted",
                            type: 'success',
                            layout: 'topCenter',
                            timeout: 2000
                        });
                    }
</script>