Usando Backbone.js, ¿es posible hacer que el enrutador navegue a la página de donde vino? Me gustaría usar eso para el caso en que cambie mi URL cuando aparezca una ventana emergente, y quiero volver a cambiarla cuando oculto la ventana emergente. No quiero simplemente regresar, porque quiero mantener la página de fondo exactamente en la misma posición que la dejé antes de mostrar la ventana emergenteSilenciosamente cambie la URL a anterior usando Backbone.js
Respuesta
Puede resolver este problema mediante la ampliación de Backbone.Router
y almacenar todas las rutas durante la navegación.
class MyRouter extends Backbone.Router
constructor: (options) ->
@on "all", @storeRoute
@history = []
super options
storeRoute: ->
@history.push Backbone.history.fragment
previous: ->
if @history.length > 1
@navigate @history[@history.length-2], true
Entonces, cuando se tiene que desestimar su modal, sólo tiene que llamar al método MyRouter.previous()
que volverá a dirigir de nuevo a la última "control".
Puede desencadenar una ruta en el evento onCloseEvent de su ventana emergente o superposición con :
router.navigate('/lasturl/');
Esto configurará la url. Si pasa true como el segundo param, también ejecutará la acción de rutas. De lo contrario, la página no se modificará.
Por supuesto, pero nuevamente la pregunta es, ¿cómo sé cuál es la última url? ¿El Backbone proporciona un método útil, o tendré que buscarlo desde window.history? – user802232
Creo que la respuesta de Mateusmaso es correcta pero requiere algunos ajustes para garantizar que siempre obtenga la URL correcta que está buscando.
En primer lugar es necesario reemplazar el método ruta a tener un método beforeRoute fuego:
route: (route, name, callback) =>
Backbone.Router.prototype.route.call(this, route, name, =>
@trigger('beforeRoute')
callback.apply(this, arguments)
)
A continuación, enlazar el evento e inicializar la variable de instancia historia:
initialize: (options) ->
@history = []
@on "beforeRoute", @storeRoute
Siguiente crear métodos de ayuda para almacenar y recuperar el fragmento:
storeRoute: =>
@history.push Backbone.history.fragment
previousFragment: =>
@history[@history.length-2]
Finalmente, usted necesita un método de ayuda final que se pueda usar para cambiar la URL sin volver a cargar y almacenar el fragmento resultante. Debe usar esto al cerrar la ventana emergente o no tendrá el fragmento esperado en su historial si el usuario recibe la ventana emergente nuevamente sin navegar en ningún otro lado. Esto se debe a que al llamar a navegar sin "trigger: true" no se activará el controlador de eventos para almacenar el fragmento.
changeAndStoreFragment: (fragment) =>
@navigate(fragment)
@storeRoute()
Esta respuesta puede no abordar la pregunta, pero es mucho más o menos el mismo problema. No pude navegar en silencio a una ruta anterior, o una ruta personalizada debido a la barra final. Para que las funciones de ruta NO se activen, use {trigger:false}
, o no use ningún disparador ya que false
es el comportamiento predeterminado, y asegúrese de que su ruta comience con #something
en lugar de '#/algo' (observe la barra inclinada) o cambie el regEx dentro de Backbone.js, la parte del enrutador.
- 1. Emacs, cambie a la ventana anterior
- 2. ¿Quieres volver a la URL anterior?
- 3. Cómo obtener la URL de la página anterior usando jquery
- 4. Backbone.js Enrutamiento de URL
- 5. Cómo obtener la URL anterior en django
- 6. Hacer que el modelo Backbone.js cambie "parcialmente" en silencio?
- 7. volver a la página anterior
- 8. Cómo obtener la URL anterior con PHP
- 9. ¿Cómo obtener la URL anterior en JavaScript?
- 10. Cómo conectarse a postgresql usando la url
- 11. ruta gatillo Backbone.js sin cambiar url
- 12. Cambie el texto al desplazarse, luego regrese al texto anterior
- 13. Volver a la página anterior
- 14. SubVersion cambie a la profundidad
- 15. sleep() silencia silenciosamente la CPU
- 16. Django URLS, usando a? en la URL
- 17. Volver a la revisión anterior en Bazar
- 18. ¿Cómo revertir un archivo a la versión anterior usando TortoiseSVN?
- 19. cambie la URL sin cambiar el nombre del recurso
- 20. Ejecutar pdflatex silenciosamente
- 21. Usando variables globales en backbone.js
- 22. ¿Debería Backbone.js obtener los parámetros GET de la URL?
- 23. Opciones de la colección Backbone.js
- 24. Ruby on Rails: ¿Cómo se obtiene la URL anterior?
- 25. Cerrar el recurso silenciosamente usando try-with-resources
- 26. La autenticación falla silenciosamente en Symfony2
- 27. de hash y no de hash URL en Backbone.js
- 28. Redirigir a la URL anterior después del inicio de sesión - Rieles
- 29. mejores prácticas para asegurar el retorno a la página anterior después de anunciarse o enlace URL
- 30. Android - cambie a la actividad sin reiniciarlo
en realidad, simplemente podría almacenar el último "hash" también en lugar de la historia del agujero – mateusmaso
¡Gracias! Exactamente lo que estaba buscando. – Felipe
No creo que esto garantice que siempre se llame al método storeRoute antes de un método de enrutamiento que pueda usarlo. Como resultado, lo que se almacena en la historia no será coherente. – DrewB