Invalidace se odešle, ale snippet nepřekreslí
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- Tomáš Votruba
- Moderator | 1114
Používám klasické překreslování snippetů, ale nedaří se mi je
rozjet.
Signál se odešle, handle provede, v Chrome debug baru v Network
mám výsledný snippet, ale na stránce se už neobjeví.
Používám jquery.1.8.2.min.js
a aktuální verzi
nette.ajax.js
. Co dělám špatně? Díky
presenter
protected function createComponentTestForm()
{
$form = new Form;
$form->addSelect("subject_id", "Předmět testu:", array("a", "b", "c"));
$form->addSelect("subject_section_id", "Kapitola:", array("A", "B", "C"));
return $form;
}
public function handleOnSelectSubjectLoad($id)
{
$form = $this->getComponent("testForm");
$form["subject_section_id"]->setItems(array($id, 1, 2, 3));
$this->invalidateControl("subjectSectionSnippet");
}
šablona
{form testForm}
{input subject_id}
{snippet subjectSectionSnippet}
{input subject_section_id}
{/snippet}
{/form}
<script type="text/javascript">
$("form #" + {$_form["subject_id"]->htmlId}).on('change', function(event) {
$.get({link onSelectSubjectLoad!}, {"id": $(this).val()});
});
</script>
- Majkl578
- Moderator | 1364
Protože nevoláš $.nette.ajax
, ale $.get
, tudíž
se neprovede událost pro překreslení snippetů.
Zkus to tedy takto:
$('#' + {$_form["subject_id"]->htmlId}).on('change', function(event) {
$.nette.ajax({
url: {link onSelectSubjectLoad!},
data: {
id: $(this).val()
}
});
});