我正在使用一个骨干路由器,Backbone.history.start({pushState: true, root: "/"});
并且我正在通过 AJAX 加载页面的部分,并使用Backbone.history.navigate(url, true);
它来确保浏览器显示的 url 指向相应的部分。例如,我使用相对 url“/username/profile”加载一个页面,然后通过单击一个选项卡并触发 AJAX 请求来加载该页面上的一个部分(“Favorite Books”),然后将 url 更改为“/用户名/最喜欢的书”。问题是,如果我从通过 ajax 加载的部分返回(使用后退按钮)到上一部分,即使 url 发生更改,页面内容也不会更改。我看过以前的帖子谈论Ajax 浏览器历史,但我想知道在 Backbone 的上下文中我应该怎么做?我找不到问题的明确解释以及如何解决它。准确地说,当点击要加载ajax的部分的选项卡时,我应该在触发的函数中添加什么?我的目标是在使用“后退”按钮时更改 URL 和页面(返回到 AJAX 请求之前的状态)。我目前正在执行以下操作:
RenderSection: function(event) {
var data = '';
var url = $(event.currentTarget).attr("href");
$.post(url, data, function(data){
$(".ajax_section").html(data);
var protocol = this.protocol + '//';
// Ensure the protocol is not part of URL, meaning its relative.
if (url && url.slice(protocol.length) !== protocol) {
Backbone.history.navigate(url, true);
}
});
return false;
},