どうも中田です。
ログアウトしたら、viewの情報を初期化したい!ですよね
よくあるログアウト後にログイン画面が表示されるアプリで
キャッシュクリアのコードを書いてたのですが、これが効かない。。。
今日はそんなお話です。
修正前
(略) $ionicHistory.clearHistory(); $ionicHistory.clearCache(); (略)
これをやってもデバッグしたところ$ionicHistoryには、
各ナビゲーションのhistory情報が残ってました。。
いろいろ調査したところこれでした。
修正後
(略) $timeout(function(){ $ionicHistory.clearCache(); $ionicHistory.clearHistory(); }, 500); (略)
ポイント
- clearCache -> clearHistory の順番で実施すること
- $timeoutを使ってキャッシュクリアを非同期実行すること
clearCacheでViewにdestroyフラグを立てて、clearHistoryで消す!
非同期で実施!
ionicのバージョンが新しいとpromiseを返すので
$ionicHistory.clearCache().then(function(){ ... });
って書き方ができるみたいですがね。