Я хочу перехватывать все изменения маршрута с помощью Sammy, чтобы сначала проверить, есть ли ожидающие действия. Я сделал это с помощью sammy.before
API и возвращаю false, чтобы отменить маршрут. Это удерживает пользователя на «странице», но по-прежнему изменяет хэш в адресной строке браузера и добавляет маршрут в историю браузеров. Если я отменю маршрут, я не хочу, чтобы он был ни в адресной строке, ни в истории, но вместо этого я ожидаю, что адрес останется прежним.
В настоящее время, чтобы обойти это, я могу либо вызвать window.history.back (yuk), чтобы вернуться к исходному месту в истории, либо sammy.redirect. И то, и другое далеко от идеала.
Есть ли способ заставить Сэмми действительно отменить маршрут, чтобы он оставался на текущем маршруте/странице, оставлял адресную строку как есть и не добавлял в историю?
Если нет, есть ли другая библиотека маршрутизации, которая сделает это?
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;
});