このメソッドを使用して、URLに移動し、イベントをトリガーし、URLをブラウザーの履歴にプッシュしませんでした。ただし、Backbone.history.navigate(url,{trigger:true, replace: true})
は履歴から以前のURLを置き換えます。例:ブラウザの履歴
前
_localhost:port/url
_
Backbone.history.navigate(url + '/list',{ trigger:true, replace: true })
予期される:ルート_url + '/list'
_およびブラウザ履歴_localhost:port/url
_でイベントをトリガーします。実際:イベントをトリガーしますが、ブラウザ履歴_localhost:port/#url/list
_。以前のURLが置き換えられます
これがあなたが求めていると思うことです、私が間違っているなら私を訂正してください:
「URLを更新せずにバックボーンでルートをトリガーするにはどうすればよいですか?」
クイックアンサー:
できません。 replace
オプションもそこでは役に立ちません。ドキュメントの抜粋は次のとおりです。
ブラウザの履歴にエントリを作成せずにURLを更新するには、replaceオプションをtrueに設定します。
ご覧のとおり、replaceはURLの更新には影響しません。
後続の回答:
URLを更新したくない場合は、アプリケーションにリストを表示することは、アプリケーションの状態のメジャーアップデートではないと思われます。それが本当なら、私の経験では、Backbone.history
オブジェクトを使用して管理するべきではありません。
この機能を直接(関数を介してなど)または間接的に(イベントをディスパッチするなど)呼び出した場合、アプリは更新され、URLは更新されません。
私は Derick Bailyの投稿 ルーター構造の設定方法が好きです。少し長いですが、読む価値があります。
また、「マリオネットの穏やかな紹介」については、 David Sulcのレポ を確認してください。 Marionette.AppRouter オブジェクトを使用していることは知っていますが、プリンシパルは引き続き正常です。 このファイルをチェックしてください 例として。
ちなみに、#
が問題である場合。 これをチェックしてくださいSO回答 。ただし、注意してください。ただし、hashChange
オプションは主にxブラウザの互換性のためです ドキュメントによると) 。