jevakallioから同じ回答を使用しましたが、コメンターの Jay Kumar が抱えていたのと同じ問題がroutesHit
ありappRouter.back()
ました。
var AppRouter = Backbone.Router.extend({
initialize: function() {
this.routesHit = 0;
//keep count of number of routes handled by your application
Backbone.history.on('route', function() { this.routesHit++; }, this);
},
back: function() {
if(this.routesHit > 1) {
//more than one route hit -> user did not land to current page directly
this.routesHit = this.routesHit - 2; //Added line: read below
window.history.back();
} else {
//otherwise go to the home page. Use replaceState if available so
//the navigation doesn't create an extra history entry
if(Backbone.history.getFragment() != 'app/') //Added line: read below
this.routesHit = 0; //Added line: read below
this.navigate('app/', {trigger:true, replace:true});
}
}
});
そして、ルーター メソッドを使用して戻ります。
appRouter.back();
追加された行:
1 つ目: から 2 を引くroutesHit
と、「戻る」ページにリダイレクトされたときに 1 が得られるため、実際にはマイナス 1 を行ったようになります。
2 つ目: ユーザーが既に「自宅」にいる場合、リダイレクトは行われないため、何もしないでくださいroutesHit
。
3 つ目: ユーザーが開始した場所にいて、「ホーム」に戻されている場合は、 を設定しroutesHit = 0
、「ホーム」にリダイレクトさroutesHit
れると再び 1 になります。