0

我正在使用骨干网和骨干网布局管理器进行构建。当我需要更改视图时,我需要将页面更新为新标题。我尝试添加一个名为 setTitle 的便捷方法,

setTitle: (new_title) ->
    document.title = new_title
    console.log "changed title to: #{new_title}"

我可以在路由更改时调用我的路由器。这很好用,但是,有一个问题。当我检查我的浏览器历史记录时,很明显它显示了与上一页相关联的标题。示例(按访问页面顺序排列的 1-3):

1. localhost/#/home/ - "Website"
2. localhost/#/blog/ - "Website - Home"
3. localhost/#/home/ - "Website - Blog"

我看到路由器直到 url 更改并且我的浏览器 Chrome 已将该页面添加到其历史记录后才调用路由。

我的问题是,如何更新页面的标题,以便标题积极反映在我的浏览器历史记录中。

更新:这不是 Safari 的问题,IE 也有它自己的事情。

4

1 回答 1

2

我可以通过更新document.title每个路由回调中的 来实现这一点。

Backbone.Router.extend({
  routes: {
    'posts': 'posts',
    'posts/new': 'newPost'
  },
  posts: function() {
    document.title = 'All Posts';
    // do something
  },
  newPost: function() {
    document.title = 'New Post';
    // do something
  }
})
于 2015-07-28T16:50:02.850 回答