Отменить маршрут с помощью Sammy.js, не влияя на историю.

Я хочу перехватывать все изменения маршрута с помощью Sammy, чтобы сначала проверить, есть ли ожидающие действия. Я сделал это с помощью sammy.beforeAPI и возвращаю 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;
});
9
задан John Papa 2 November 2012 в 14:58
поделиться