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