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