2015-08-03 7 views
7

Hier ist mein Code.Wie lösche ich lokale Speicherdaten in ionischen?

$scope.logout=function(){ 
    localstorage.set('user_id', ""); 
    localstorage.set('access-token', ""); 
    localstorage.set('isUserTraverseColony', 0); 
    localstorage.set('isStarted', 0); 
    $window.localStorage.clear(); 
    $window.localStorage.removeItem(access-token); 
    $ionicHistory.clearCache(); 
    $ionicHistory.clearHistory(); 
}; 

Ich mag das Zugriff-Token-Variable von meinem local löschen, es arbeitet für Browser in Ordnung, wenn ich

$window.localStorage.clear(); 
$window.localStorage.removeItem(access-token); 

verwenden, aber es ist nicht für mein App zu arbeiten.

hier ist mein Werk local

angular.module('starter.controllers').factory('localstorage', ['$window', '$localStorage','$q', function ($window, $localStorage,$q) { 
    return { 
     set: function (key, value) { 
      var deferred = $q.defer(); 
      $window.localStorage[key] = value; 
       deferred.resolve(1); 
       return deferred.promise; 
     }, 
     get: function (key, defaultValue) { 
      return $window.localStorage[key] || defaultValue; 
     }, 
     setObject: function (key, value) { 
      $window.localStorage[key] = JSON.stringify(value); 
     }, 
     getObject: function (key) { 
      return JSON.parse($window.localStorage[key] || '{}'); 
     } 
    } 

}]); 

Jede Idee?

+0

'access-tokan' ist ein Tippfehler oder Sie haben es so in Ihrem Code? Haben Sie versucht, 'localstorage.clear()' zu verwenden ('$ window' zu entfernen)? – JcDenton86

+0

Ich benutze lokale Speicherfabrik, ich habe meine Frage bearbeitet –

Antwort

6

Ich hatte das gleiche Problem vor einiger Zeit. Ich verwendete einige Globale Variable für Local Storage. Ihr Code scheint in Ordnung zu sein. Aber man kann es besser optimieren

$scope.logout = function(){ 
    $window.localStorage.clear(); 
    $ionicHistory.clearCache(); 
    $ionicHistory.clearHistory(); 
}; 

Sie brauchen nicht

localstorage.set('user_id', ""); 
localstorage.set('access-token', ""); 
localstorage.set('isUserTraverseColony', 0); 
localstorage.set('isStarted', 0); 

zu setzen, weil Sie sie löschen.

4

Sie könnten die clear() Methode, um Ihre benutzerdefinierten localstorage Dienst hinzufügen:

angular.module('starter.controllers').factory('localstorage', ['$window', '$localStorage','$q', function ($window, $localStorage,$q) { 
    return { 
     set: function (key, value) { 
      $window.localStorage.setItem(key, value); 
     }, 
     get: function (key, defaultValue) { 
      return $window.localStorage.getItem(key) || defaultValue; 
     }, 
     setObject: function (key, value) { 
      $window.localStorage.setItem(key, JSON.stringify(value)); 
     }, 
     getObject: function (key) { 
      return JSON.parse($window.localStorage.getItem(key) || '{}'); 
     }, 
     clear: function() { 
      $window.localStorage.clear(); 
     } 
    } 

}]); 

Hinweis: Ich habe Ihren Dienst aktualisiert Versprechen zu entfernen, weil HTML5 localStorage is syncronous und unter Verwendung von Standard Get- und Set-Methoden

Und dann in dir Steuerung:

$scope.logout = function(){ 
    localstorage.clear(); 
    $ionicHistory.clearCache(); 
    $ionicHistory.clearHistory(); 
}; 
Verwandte Themen