Jak na routování v javascriptu

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

Ahoj,
Prosím o radu, jak řešíte generování Nette odkazů v JavaScriptu?
Našel jsem pouze toto: https://forum.nette.org/…z-javascript
ale tam se řeší vlastně jen statický odkaz, to není tak úplně můj problém. Potřeboval bych generovat odkazy i s nějakou proměnnou, kterou zná až javascript, např. bych chtěl volat pro natažení událostí do kalendáře:

$.get({link Events:list year='%year%',month='%month%'}, function(){...});

S tím, že year a month se dosazují až automaticky javascriptem.
Napadlo mě toto: prostě vygenerovat odkaz takto a pak javascriptem nahradit %year% za aktuální rok (na to, že string %year% se jinde v odkazu neobjeví, se celkem dá spolehnout), jenže nette (správně) linky escapuje, takže bych musel nahrazovat %25year%25, což už je celkem divoké a co do čistoty kódu se mi to nelíbí.

Dále mě napadlo generovat odkaz dynamicky přes AJAX, ale krom toho, že mi to připadá jako zbytečný overhead, se jaksi rekurzivně setkám se stejným problémem, když budu chtít odkaz získat:

$.get({link Utils:generateLink 'Events:list year=\'%year%\',month=\'%month%\'}, function(payload){
	$.get(payload.link, function(){...});
});

takže tím bych vlastně nic nevyřešil, jen bych to celé zkomplikoval.

Ptám se tedy, zda existuje nějaké hezké a čisté řešení, případně jak to běžně řešíte vy, nebo zda mám zůstat u nahrazování %25year%25 .
Díky za tipy :)

petr.pavel
Člen | 535
+
0
-
$.get( {link Events:list}, { "month": month, "year": year } );

https://api.jquery.com/jQuery.get/

amik
Člen | 118
+
0
-

Jo, tohle mě taky napadlo, problém je ten, že to nerespektuje Nette routy. Co když budu mít naroutováno

$router[] = new Route('<presenter>/<action>/<month>/<year>', 'Homepage:default', $secureFlag);

Já vím, v tomhle případě by asi takováhle routa byla trochu úchylná, jen na tom chci demonstrovat, že to taky není úplně stoprocentní řešení.

petr.pavel napsal(a):

$.get( {link Events:list}, { "month": month, "year": year } );

https://api.jquery.com/jQuery.get/

sKopheK
Člen | 207
+
0
-

Řešil bych to přes handle, kterému bych ty parametry předal, a v něm překreslil potřebné části stránky. Pěkné URL vůbec neřeš, když to jde přes AJAX. Osobně si dávám potřebné URL pro JavaScript do nějaké globální proměnné.

amik
Člen | 118
+
0
-

Díky, beru to tedy tak, že žádné opravdu čisté řešení v nette pro toto není. Je fakt, že url pro ajax nemusí být nice, takže prostě budu tyhle parametry vždy předávat jako součást query. S globální proměnnou to řeším stejně :)

sKopheK napsal(a):

Řešil bych to přes handle, kterému bych ty parametry předal, a v něm překreslil potřebné části stránky. Pěkné URL vůbec neřeš, když to jde přes AJAX. Osobně si dávám potřebné URL pro JavaScript do nějaké globální proměnné.