ページが読み込まれたときにWebサーバーからのCookieが更新されるように、ページ全体を再読み込みするリダイレクトを行いたいです。 window.location = "/#/Next"
およびwindow.location.href = "/#/Next"
は機能しません。サーバーにヒットしないAngularルートを実行します。
Angularコントローラー内で完全なサーバー要求を行う正しい方法は何ですか?
<a>
タグの場合:
target="_self"
タグに<a>
を付ける必要があります
AngularJSが全ページのリロードを実行する場合は3つあります。
<a href="/ext/link?a=b" target="_self">link</a>
<a href="http://angularjs.org/">link</a>
<a href="/not-my-base/link">link</a>
javascriptの使用:
$location
サービスでは、URLのみを変更できます。ページをリロードすることはできません。 URLを変更してページをリロードするか、別のページに移動する必要がある場合は、低レベルAPIを使用してください:$window.location.href
。
見る:
JSコード(つまりHTMLアンカーからではない)で作業しているのと同じ問題がありました。これは私たちがそれを解決した方法です:
必要に応じて、仮想的に$location
サービスを通じて現在のURLを変更します。これは、宛先が現在のURLの単なるバリエーションである場合に役立ち、$location
ヘルパーメソッドを利用できます。例えば。クエリ文字列パラメーターの値を変更するために$location.search(..., ...)
を実行しました。
必要に応じて、現在の$location.url()
を使用して、新しいリンク先URLを作成します。動作するために、この新しいものには、スキーマ、ドメイン、ポートの後にすべてを含める必要がありました。例えばに移動したい場合:
http://yourdomain.com/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en
次に、URLを次のように設定する必要があります。
var destinationUrl = '/YourAppFolder/YourAngularApp/#/YourArea/YourAction?culture=en';
(先頭に'/'
もあります)。
low-levelで新しいリンク先URLを割り当てます:$window.location.href = destinationUrl;
低レベルでの強制再ロード:$window.location.reload();
検索してヒットとトライアルセッションを与えた後、最初に次のようなURLを指定することでそれを愛することができます
$window.location.href = '/#/home/stats';
その後、リロード
$window.location.reload();
同じ問題がありました。 window.location
、$window.location
、または<a href="..." target="_self">
を使用すると、ルートでページが更新されません。したがって、キャッシュされたサービスが使用されますが、これはアプリに必要なものではありません。 window.location
の後にwindow.location.reload()
を追加して、ルーティング後にページを強制的に再読み込みすることで解決しました。ただし、このメソッドはページを2回ロードするようです。汚いトリックかもしれませんが、それは仕事をします。これは私が今持っている方法です:
$scope.openPage = function (pageName) {
window.location = '#/html/pages/' + pageName;
window.location.reload();
};
これを試して
$window.location.href="#page-name";
$window.location.reload();