ローカルルート http:// localhost:9000 /#/ deviceDetail / そのビューを管理するコントローラーがあります。そのビューに進む前に、いくつかの変数を$rootScope
に設定します(たとえば$rootScope.dashboards
)。
そのビューに入ると、ダッシュボードのプロパティにアクセスできますが、たとえばF5
キーでページを更新すると、プロパティのダッシュボードが失われます。
LocalStorage変数に$rootScope
を保存しようとしましたが、JSON.stringify
メソッドで循環参照の問題が発生しました。
それを管理するためのヒントは?
AngularJSはJavaScriptフレームワークであり、すべてがメモリヒープに格納され、ページを開くとヒープが開始され、ページを閉じるとヒープが破棄されます。このコンテキストでは、ブラウザの更新はページを閉じて再度開くようなものです。
更新後も値を保持するには、値をCookieに保存する必要があります。これには、たとえば $cookies
または sessionStorage / localStorage M Kの推奨通り。
AngularJSとASP.NET MVCの使用開始-待望のパート の記事に従って、Cookieを使用して認証トークンを保存しようとしました。しかし、F5キーを押すか、Chromeブラウザを更新すると、Cookieが破棄されます。
その記事によると、ngCookiesは、ページ更新のトークンを維持するためにページ更新を処理するのに役立ちます。そして私はそれがそうだと思っていました、そして私はngCookiesが私を殺したことを知りませんでした。ページを更新すると破壊されました!数時間後にオンラインで調査したところ、この記事が役に立ちました。
M Kによると、私はlocalStorage(またはsessionStorage)を使用して、Cookieの頭痛を取り除くのに役立ちました。 Cookieを使用して認証トークンなどを保存することはお勧めできません。上記の記事が言及/確認したとおり、私はその問題に遭遇し、道に迷いました(「cookieを使用する」ことから来るバグを知りませんでした)。それで、それはその記事のバグでした。
百万回ありがとう、M K.
このようなui.routeを使用している場合は、localStorageおよび$ stateChangerStartチェックを使用してください。
$rootScope.$on('$stateChangeStart', function(event, toState) {
// Grab the user from local storage and parse it to an object
var user = JSON.parse(localStorage.getItem('user'));
if(user) {
$rootScope.currentUser = user;
}
});