问题
I am Creating an app where the user can login from FaceBook or Twitter. After login, the user is directed to some HomePage. And here, controller loads and my initial function is called which loads data specific to that user.
When user clicks on Log Out. The tokens are cleared and user is directed to SignIn Page. Now without closing the app, if the user SignIn again using twitter, The user is directed to same homepage. The Scope of that controller has the same data. I know Ionic uses cache to improve performance. but I just want a way to clear that cache only when user clicks on logout button.
回答1:
I found a solution, we need to clear cache in next/other digest cycle. By using $timeout
we can achieve this. Something like this.
$scope.logout = function(){
$location.path('/signin')
$timeout(function () {
$ionicHistory.clearCache();
$ionicHistory.clearHistory();
$log.debug('clearing cache')
},300)
}
Edit: Give some milliseconds to clear functions at it works great.
回答2:
You can handle this by calling the $ionicHistory.clearCache()
method, to clear the old caches. You could also call $ionicHistory.clearHistory()
to reset the history so it is like a fresh session.
http://ionicframework.com/docs/api/service/$ionicHistory/
来源:https://stackoverflow.com/questions/29841166/reset-unload-controller-after-changestate-logout-called-angularjs