Chcę przechwycić wszystkie zmiany trasy z Sammy, aby najpierw sprawdzić, czy jest oczekująca akcja. Zrobiłem to za pomocą interfejsu API sammy.before
i zwracam wartość false, aby anulować trasę. Dzięki temu użytkownik pozostaje na "stronie", ale nadal zmienia hasz w pasku adresu przeglądarki i dodaje trasę do historii przeglądarek. Jeśli anuluję trasę, nie chcę jej w pasku adresu ani w historii, ale zamiast tego oczekuję, że adres pozostanie taki sam.Anuluj trasę za pomocą Sammy.js bez wpływu na historię
Obecnie, aby obejść ten problem, mogę wywołać window.history.back (yuk), aby wrócić do pierwotnego miejsca w historii lub sammy.redirect. Oba są mniej niż idealne.
Czy istnieje sposób, aby sammy naprawdę anulować trasę, tak aby pozostała na aktualnej trasie/stronie, pozostawia pasek adresu, jak jest, i nie dodaje do historii?
Jeśli nie, czy jest inna biblioteka routingu, która to zrobi?
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;
});
Hahaha John, mam tutaj szukając więcej informacji o tym, jak to osiągnąć w serii SPA :-) –