web-dev-qa-db-ja.com

Backbone.history.navigate(url、{trigger:true、replace:true})

このメソッドを使用して、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が置き換えられます

9
user2508256

これがあなたが求めていると思うことです、私が間違っているなら私を訂正してください:

「URLを更新せずにバックボーンでルートをトリガーするにはどうすればよいですか?」

クイックアンサー

できません。 replaceオプションもそこでは役に立ちません。ドキュメントの抜粋は次のとおりです。

ブラウザの履歴にエントリを作成せずにURLを更新するには、replaceオプションをtrueに設定します。

ご覧のとおり、replaceはURLの更新には影響しません。

後続の回答

URLを更新したくない場合は、アプリケーションにリストを表示することは、アプリケーションの状態のメジャーアップデートではないと思われます。それが本当なら、私の経験では、Backbone.historyオブジェクトを使用して管理するべきではありません。

この機能を直接(関数を介してなど)または間接的に(イベントをディスパッチするなど)呼び出した場合、アプリは更新され、URLは更新されません。

私は Derick Bailyの投稿 ルーター構造の設定方法が好きです。少し長いですが、読む価値があります。

また、「マリオネットの穏やかな紹介」については、 David Sulcのレポ を確認してください。 Marionette.AppRouter オブジェクトを使用していることは知っていますが、プリンシパルは引き続き正常です。 このファイルをチェックしてください 例として。

ちなみに、#が問題である場合。 これをチェックしてくださいSO回答 。ただし、注意してください。ただし、hashChangeオプションは主にxブラウザの互換性のためです ドキュメントによると)

14
Aubricus