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 に答える