我使用了jevakallio的相同答案,但我遇到了与评论者 Jay Kumar 相同的问题:routesHit
没有减去所以点击appRouter.back()
足够多的次数会使用户退出应用程序,所以我添加了 3 行:
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();
添加的行:
第一个:从 中减去 2 routesHit
,然后当它重定向到“返回”页面时,它会获得 1,所以实际上就像你做了一个负 1。
第二个:如果用户已经在“家”,就不会有重定向,所以不要对routesHit
.
第三个:如果用户在他开始的地方并被送回“家”,请设置routesHit = 0
,然后重定向到“家”routesHit
时将再次为1。