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