我想用Sammy拦截所有路由更改,首先检查是否存在待处理的操作。我使用
目前,为了解决这个问题,我可以调用window.history.back(yuk)返回到历史记录中的原始位置,或者使用sammy.redirect。但这两种方法都不太理想。
有没有办法使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;
});