1. ホーム
  2. ジャバスクリプト

[解決済み】AngularJSのルーティングでハッシュ「#」がない場合

2022-04-07 16:11:18

質問

AngularJSを勉強しているのですが、ひとつだけ本当に困ったことがあります。

私は $routeProvider を使用して、アプリケーションのルーティングルールを宣言しています。

$routeProvider.when('/test', {
  controller: TestCtrl,
  templateUrl: 'views/test.html'
})
.otherwise({ redirectTo: '/test' });

しかし、ブラウザで自分のアプリに移動すると、次のようになります。 app/#/test ではなく app/test .

そこで質問なのですが、なぜAngularJSはこのハッシュを追加するのでしょうか? # をURLへ追加してください。それを回避する方法はありますか?

どのように解決するのですか?

実は、HTML5以外のブラウザでは、#(ハッシュタグ)が必要なのです。

そうしないと、指定された href でサーバーに HTTP 呼び出しを行うだけになってしまいます。 この#は古いブラウザのショートサーキットで、リクエストを発行しないので、多くのjsフレームワークがその上に独自のクライアントサイドのリルートを構築することができます。

を使用することができます。 $locationProvider.html5Mode(true) を使用して、HTML5ストラテジーがあればそれを使用するようにangularに指示します。

HTML5戦略に対応しているブラウザの一覧はこちらです。 http://caniuse.com/#feat=history