Nette 2.0 ajax router / hash driven
- mcmatak
- Člen | 504
Dělám ajax app, potřebuji aby uživatelé si mohli předávat url, a aby url držela nějaký stav aplikace.
Jediná šance je hash, umí už nette něco jako hash router?
tam byl ještě nějaký trik s
!#
to zavedl google ne?
četl jsem v minulosti pár článků o tom, ale už je to delší dobu, neorientujete se někdo v aktuálních trendech?
další věc je, že je určitě nutný nějaký javascript router, aby poznal co z hashe má dělat
na nějakém ze starších projektů jsem použil něco podobné
http://benalman.com/…ange-plugin/
co nette? tváří se na to nějak, řešilo se to ve spojení s 2.0 ne?
- o5
- Člen | 416
Ve svojim gride jsem to resil za pomoci hashchange pluginu, kterej ti naimplementuje event, kdy se hash zmeni a podle toho si udelas request jaky chces a prekreslis. Pokud by si to chtel videt jak sem to implementoval muzu poslat link.
Nette to imho v soucasne verzi neumi avsak na webexpu to david ukazoval, ale je to asi v hodne ranne fazi.
edit: aha, neklikal jsem na ten tvuj link
Editoval o5 (9. 6. 2011 13:04)
- Matúš Matula
- Člen | 257
hashchange
nie je jedina sanca. Mrkni na History.js dokaze menit url
pomocou History
objektu cez pushState()
s graceful
degradaciou na hashchange
. Ma to super dokumentaciu, takze tam
najdes vsetko, co potrebujes.
Myslim, ze Nette to oficialne nijako neriesi zatial..
- newPOPE
- Člen | 648
Podla mna je zbytocne riesit router. My sme toto riesili ale potrebovali sme robit ajaxom vsetko (get, formulare …)
Riesenie je vcelku jednoduche pokial nepotrebujes posielat formulare.
Pouzili sme jquery.history.js kde je zaveseny event ked sa zmeni URL za # tak sa proste posle ajax request dostanes spat snippety a len replacnes. Cize sme mali uz v layout VELKY snippet :-). Vyhodu tu malo tu ze ked si vypol JS tak si fungoval dalej akoby sa nic nezmenilo…
Aha ohladom toho routingu, ziadny dalsi router nebol proste sme mali napr
#/page/1/
tak AJAXom bol request
na {$baseUrl}+ '/page/1/'
Editoval newPOPE (9. 6. 2011 13:39)
- mcmatak
- Člen | 504
no rozumím, ale co handle atd. to znamená že všechna routovací logika je
- na dvou místech, tzn. v bootstrapu
- v různých funkcích javascriptu roztrkané různě po kódu
změna komponenty, její přesun nebo změna názvu, atd. se musí hledat různě po kódu?
podle jakých pravidel sestavovat hash? jak skládat parametry atd? co handle?