Search code examples
angularjsauthenticationcachingionic-frameworkangularjs-routing

Reset/Unload Controller after ChangeState (logout called) . AngularJS


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.


Solution

  • 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.