Urýchlenie inicializácie ajax odkazov

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

Neviem si dať rady s ajaxifikáciou odkazov načítaných v modálnom okne. Používam nette.ajax.js.

Na webe mám použitú komponentu pre vykreslovanie modálnych okien.

Zdroj modálneho okna sa načíta z data atribútu buttonu.

var initDataModal = function () {
	$('*[data-modal]').off();
	$('*[data-modal]').on('click', function(event) {
		$.nette.ajax({
			url: $(event.target).data('modal'),
			success: function (result) {
				BootstrapDialog.show({
					title: '',
					type: BootstrapDialog.TYPE_DANGER,
					message: $('<div></div>').html(result)
				});
			}
		});
	});
}
$.nette.ext('initDataModal', {
	init: initDataModal,
	complete: initDataModal
});

Do modálneho okna načítava komoponenta s tabmi. Prekliky medzi tabmi mám riešené ajaxovo – tzn. kliknutím na signál komponenta rozpozná, že má prekresliť snippet a vrátiť iný tab.

Potiaľ všetko funguje bez problémov.

Problém je, že odkazy na taboch s triedou ajax začnú reagovať ajaxovo až po pár sekundách (2–3) a nie ihneď. Tzn. kliknem na zobrazenie modálneho okna, zobrazí sa, kliknem na zmenu tabu a načíta sa mi obsah nového tabu normálne ako text/html a nevráti sa mi snippet. Pri rýchlom prekliku ešte nie sú inicializované ajax odkazy. Ak počkám pár sekúnd, všetko funguje ako má.

Dá sa inicializácia odkazov nejak urýchliť/vynútiť okamžite po načítaní modálneho okna?

Vďaka!

CZechBoY
Člen | 3608
+
0
-

A nemáš jen pomalej skript?

romiix.org
Člen | 343
+
0
-

CZechBoY napsal(a):

A nemáš jen pomalej skript?

To má znamenať čo? :) Resp. ako sa to dá riešiť? JS je na stránke žiaľ dosť. Ide o veľmi rozsiahlu aplikáciu.

Napadlo mi nahradiť <a> za <span data-href="{link!}" class="btn"> a následne na týchto elementoch aktivovať ajax prekilky.

Prípadne, nejaký lepší nápad?

CZechBoY
Člen | 3608
+
0
-

Jakože odpověď serveru (php skript).

romiix.org
Člen | 343
+
0
-

CZechBoY napsal(a):

Jakože odpověď serveru (php skript).

Ani v tom nebude problém. Odpoveď je od 150 ms.

CZechBoY
Člen | 3608
+
0
-

Tak zkus profiler no, nic jinýho asi nepomůže…

romiix.org
Člen | 343
+
0
-

Vlastne som zistil, že aktivovanie ajaxových dotazov bolo závislé od cyklického načítavania noviniek (jeden refresh dotaz každých 5 sekúnd). Ak som toto cyklické načítavanie zakázal, novo načítané .ajax odkazy sa vôbec neaktivovali.
Tzn. načítavanie obsahu do modálneho okna cez JS

$.nette.ajax({
    url: $(event.target).data('modal'),
    success: function (result) {
        BootstrapDialog.show({
            title: '',
            type: BootstrapDialog.TYPE_DANGER,
            message: $('<div></div>').html(result)
        });
    }
});

nespúšťa nette.ajax rozšírenia. To som nevedel :)