Quiero interceptar todos los cambios de ruta con Sammy para verificar primero si hay una acción pendiente. Lo he hecho usando la API sammy.before
y devuelvo falso para cancelar la ruta. Esto mantiene al usuario en la 'página', pero aún cambia el hash en la barra de direcciones de los navegadores y agrega la ruta al historial de los navegadores. Si cancelo la ruta, no la quiero en la barra de direcciones ni en el historial, pero espero que la dirección no cambie.Cancelar ruta usando Sammy.js sin afectar el historial
Actualmente, para evitar esto puedo llamar a window.history.back (yuk) para volver al punto original en el historial o sammy.redirect. Ambos son menos que ideales.
¿Hay alguna manera de hacer que Sammy realmente cancele la ruta para que permanezca en la ruta/página actual, abandone la barra de direcciones como está y no se agregue al historial?
Si no, ¿hay otra biblioteca de enrutamiento que hará esto?
sammy.before(/.*/, function() {
// Can cancel the route if this returns false
var response = routeMediator.canLeave();
if (!isRedirecting && !response.val) {
isRedirecting = true;
// Keep hash url the same in address bar
window.history.back();
//this.redirect('#/SpecificPreviousPage');
}
else {
isRedirecting = false;
}
return response.val;
});
Jajaja Juan, llegué aquí buscando más información acerca de cómo se logró este en su serie SPA :-) –