Po invalidaci snippetu se datepicker js deaktivuje + diagnostics.dumps

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Tomáš Votruba
Moderator | 1114
+
0
-

1. Používám aktuální verzi nette.ajax.js Po obnovení snippetu mi přestane fungovat datepicker, který je aktivován pomocí:

$("input.date").each(function () {
	// ...
}

Myslím, že jsem jako záplatu tohoto problému používat livequery, ale tomu se chci vyhnout. Kdyby to šlo upravit přímo ve snippetu (tedy že by to umělo i unfriendly zápis používaných souborů), bylo by to super.

2. Případně jak funguje přesně funguje rozšíření diagnostics.dumps? Tedy jak ho zapnout a používat.

Díky a dobrou chuť, pokud právě obědváte :)

Marek Šneberger
Člen | 130
+
0
-

Měl jsem stejný „problém“.
Stačilo ve snippetu znovu nabindovat datepicker. Řešení to asi není moc OK, ale pomohlo mi :)

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

Děkuji za přání, převedu si ho k večeři :). Trik je přeci v použití rozšíření:

$.nette.ext('datepicker', {
	load: function () {
		$("input.date").each(function () {
 			// ...
		});
	}
});

Callback v load události se provede po každém úspěšném požadavku. Jen je třeba si dát pozor, aby se nějaké události zbytečně nebindovaly vícekrát.

Marek Šneberger
Člen | 130
+
0
-

@vojtech.dobes: To mě nenapadlo, a přitom tvůj ajax plugin používáme :) Ještě dnes vyzkouším, díky!

Tomáš Votruba
Moderator | 1114
+
0
-

@vojtech.dobes: Díky, funguje. Jde to řešit nějak rozumně než obalovat veškeré věci, které chci takto použít, do zmíněné klauzule?

Něco jako toto? :)

$.nette.ext('datepicker', {
    load: function () {
        $("input.date").each(function () {
            // includni originalni nezivy .js
        });
    }
});

Editoval Schmutzka (23. 7. 2013 11:03)

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

No, vzhledem k možnostem a syntaxi Javascriptu pochopitelně ne :).

Pomoci může nástroj typu require.js, ale pochopitelně nikdy to nebude fungovat takto out-of-box. Bohužel. Nejlepší je, když „neživý .js“ nabízí vhodné rozhraní, a stačí si vytvořit maličkou extenzi, která s tímto API bude pracovat. Něco jako datepicker.init(); nebo datepicker.initInElement(el);.