2012-01-29 13 views
7

¿Hay alguna manera cómo combinar de hash y no hash de URL en la aplicación Backbone.js?de hash y no de hash URL en Backbone.js

Configuré Backbone.history.start({pushState: true}). Cuando el usuario hace clic en algún enlace, obtengo los datos JSON del servidor, la página de actualización y llamo al Backbone.history.navigate para cambiar la URL en el navegador (por ejemplo, desde example.com/zlinsky/kampan/mf/ hasta example.com/moravskoslezsky/kampan/mf/).
Si el usuario copia la URL del navegador y abre en la segunda pestaña, verá la misma página (por lo que cada página actualizada de esta manera tiene la página correspondiente en el servidor). Esto es exactamente lo que quiero.

Pero ahora tengo un problema ...

Tengo varios <select> en la página también. Cuando el usuario cambia el valor en ellos, realizo algunos cambios dinámicos en la página (sin obtener JSON del servidor, las actualizaciones solo se realizan en el lado del cliente). Me gustaría cambiar las URL según <select>, por ejemplo a example.com/moravskoslezsky/kampan/mf/#state1 (por lo tanto, cuando alguien envíe esta URL, la otra verá la misma página, en el mismo estado que el remitente).

No he podido encontrar la forma, cómo hacerlo en Backbone.js. Si configuro pushState: true en Backbone.history, Router ignorar las etiquetas hash.
Si configuro pushState: false, no puedo establecer las URL como describo en el primer párrafo anterior.

Gracias por cualquier pista.

+0

que fueron capaces de resolver el problema? estoy enfrentando exactamente el mismo problema cuando pushState es verdadero, no puedo enrutar las URL que contienen hash; hash es completamente ignorado. – Fedor

Respuesta

2

Puede llamar: Backbone.history.navigate("/foo/bar#fragment")

Pero no creo que sea una buena idea, porque es decir, no admite pushState, por lo que la columna vertebral se va a utilizar URLs explosión de hash (en IE).

Tal vez usted podría utilizar cadenas de consulta: Backbone.history.navigate("/foo/bar?foo=bar", true) que estarán en los navegadores modernos: http://domain.tld/foo/bar?foo=bar y en decir: http://domain.tld#/foo/bar?foo=bar

Cuestiones relacionadas