我想拦截 Sammy 的所有路由更改,以首先检查是否有待处理的操作。我已使用sammy.before
API 完成此操作,并返回 false 以取消路由。这使用户保持在“页面”上,但仍会更改浏览器地址栏中的哈希并将路由添加到浏览器的历史记录中。如果我取消路线,我不希望它出现在地址栏或历史记录中,而是希望地址保持不变。
目前,为了解决这个问题,我可以调用 window.history.back (yuk) 以返回历史记录中的原始位置,或者调用 sammy.redirect。两者都不理想。
有没有办法让 sammy 真正取消路线,使其停留在当前路线/页面上,保持地址栏不变,并且不添加到历史记录中?
如果没有,是否有另一个路由库可以做到这一点?
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;
});