我有一个类似于以下定义的路由器(此处为演示目的大大简化了):
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 的路由不会触发。知道这里可能会发生什么吗?我是否对历史的运作方式做出了一些错误的假设?
编辑:
似乎我得到了不一致的结果 - 不总是不执行的初始条目,有时是我第一次回顾历史之后的任何内容。也就是说,我单击一次后退按钮,url 更改,路由正确触发。我再次点击它,网址更改,路线不触发。感觉我做错了什么,但我不知道。