sammy.js ルーティングが期待どおりに機能しません。
次のJavaScriptがあります。
(function ($) {
var app = $.sammy('#main', function () {
this.get('#/', function (context) {
context.log("start page");
});
this.get("#/another/:id/", function (context) {
context.log("another page with id = " + context.params["id"]);
});
});
$(function (context) {
app.run('#/');
});
})(jQuery);
私の理解では、URL が変更されるたびに、新しいルートが宣言されたルートの 1 つに対応している限り、コンソール ログに関連するメッセージが表示されるはずです。
しかし、私はしません。
ページが最初に読み込まれると、「開始ページ」メッセージが表示されます。ここまでは順調ですね。
私なら
- [my url]/#/another/1/ へのリンクをクリックします
- [my url]/#/another/1/ をアドレスバーに手動で入力し、<Enter> を押します。
... 何も起こりません。つまり、2 番目のルートのメッセージが表示されません。
ただし、アドレス バーの 2 番目のルートでは、F5 キーを押すか、ブラウザーの更新ボタンをクリックすると、ページがリロードされ、予想されるコンソール メッセージが表示されます。
それとも、ハイパーリンクやキーボードによって URL ハッシュが変更されたときに Sammy がそれに気付き、それに応じて行動するべきではないのでしょうか? スクリプトに追加する必要があるものは他にありますか?