次のようなルーターを定義しました (ここではデモ用に大幅に簡略化しています)。
var MyRouter = Backbone.Router.extend({
routes: {
'': 'search',
'directions': 'directions',
'map': 'map'
},
search: function () {
// do something
},
directions: function () {
// do something
},
map: function () {
// do something
},
initialize: function () {
this.listenTo(myModel, 'change', this.updateNavigation);
Backbone.history.start({ pushState:true });
},
updateNavigation: function () {
var selected = myModel.get('selected');
this.navigate(selected);
}
});
履歴エントリは updateNavigation 呼び出しによってすべて適切に作成されています。生成した履歴に戻るために戻るボタンを押すと、最初のエントリに到達するまで、エントリごとにルートが起動します。 . その時点で、その履歴エントリで URL が更新されていても、その時点で URL を解釈する必要があるルートは起動しません。ここで何が起こっているのでしょうか?歴史がどのように機能するかについて、私はいくつかの悪い仮定をしていますか?
編集:
一貫性のない結果が得られるようです-実行されないのは常に最初のエントリだけではなく、履歴を最初に戻した後の何かである場合があります。つまり、戻るボタンを 1 回クリックすると、URL が変更され、ルートが適切に起動します。もう一度押すと、URL が変わり、ルートが起動しません。何か間違ったことをしているような気がしますが、手がかりがありません。