viacnasobna invalidacia snippetu

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

Caute viete mi poradit?
v komponente taskTableFilter mam select a po onChange pomocov nette.ext odoslem formular a po odoslani volam rodica [presenter] a invalidujem jeho komponentu taskTable

ked odoslem formular tlacitkom prebehne vsetko ok, ale ked odoslem form onChange pomocov nette.ext
tak 1 krat sa mi odosle len 1 poziadavka, ale znovu zmenim select tak sa ta poziadavka odosle uz 2 krat
ked odoslem znovu tak sa odosle poziadavka uz 4 krat .. 8 krat a tak dalej, proste sa nasobia, neviete preco?

mam presenter v ktorom mam komponentu

public function createComponentTaskTableFilter()
{
  $taskTableFilter = new TaskTableFilter();
  return $taskTableFilter;
}

a v latte presenetu mam :

{snippet taskTableFilter}
  {control taskTableFilter}
{/snippet}

{snippet taskTable}
  {control executorIncompleteTasks}
{/snippet}

v komponente po odoslani formulara volam rodica [presenter] a invalidujem jeho komponentu taskTable

$this->getParent()->invalidateControl('taskTable');

nette.ext

$.nette.ext('select-onchange', {
   load: function () {
     $('select.ajax').change(function (e) {
       $(this).closest('form').submit();
       return false;
     });
   }
 });
duskohu
Člen | 778
+
0
-

ono sa to sptava ako by ten input tam nabalovalo, najprv prida 1 potom su tam 2 po odoslani su tam 4 a zakazdym vsetky vykona …

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Pokud ten <select> zůstává navěky na místě, změň klíč z load na init. Anebo si to udělej bulletproof:

$('select.ajax').off('change.myapp').on('change.myapp', function (e) {
	$(this).closest('form').submit();
	return false;
});
duskohu
Člen | 778
+
0
-

dakujem cez tem init to funguje fajn :-)