サミーとのすべてのルート変更をインターセプトして、保留中のアクションがあるかどうかを最初に確認したいと思います。APIを使用してこれを実行しましたが、sammy.before
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;
});