1

html5modeが有効になっているangularjsアプリがあります。

IE8でアプリを実行しようとしましたが、URLの前に#が付いているようです。それはそうだと思いますか-戻るボタンが機能するなど。ハッシュバンモード

最新のブラウザでアプリを実行しようとしましたが、履歴APIも機能しているようです。大丈夫だ。

しかしhttp://localhost:3000/notes、両方のブラウザのアドレスバーを直接押すと、webrick/railsアプリからルーティングエラーが発生します。私はangularがこのリクエストを引き継いで処理すると思いました。

角度ガイドが言うように、私はサーバー側に何も設定していません:

このモードを使用するには、サーバー側でURLを書き換える必要があります。基本的に、アプリケーションのエントリポイント(index.htmlなど)へのすべてのリンクを書き換える必要があります。

それが、webrickからルートエラーが発生する理由ですか?そして、書き換えルールを設定できるとしたら、それはどのように機能しますか?(必要に応じてインデックスを付ける)「/ notes」のようなものを書き直すとhttp://localhost:3000/notes -> http://localhost:3000、ジャンプしたい場所がなくなり、Angularアプリはどこにルーティングするかがわかりません。

そして、webrickに何をどのように書き直すかを伝える方法がない場合。開発環境ではどのようにしていますか?

大いに感謝する。

4

1 に答える 1

1

ルート/notesであるかのように同じデータを返すようにサーバーを構成する必要があります。/リダイレクトではありません(削除されるためnotes)。基本的に、他のルートと一致しない場合に戻るキャッチオールルートが必要です。それか、既知のルート(つまり、、、など)を列挙し、/それら/notesすべて/otherに同じドキュメントを返すようにします。その時点で、angularはパスを検出し、それに応じて動作します。

于 2012-12-20T18:09:02.373 に答える