2015-08-03 39 views
7

这是我的代码。如何清除离子中的localstorage数据?

$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(); 
}; 

我想从我的localStorage删除访问令牌变量,它做工精细的浏览器当我使用

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

但它不工作我的应用程序。

,这里是我的localStorage厂

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] || '{}'); 
     } 
    } 

}]); 

任何想法?

+0

'access-tokan'是一个错字,或者你在代码中有这样的错误吗?你尝试过使用'localstorage.clear()'(删除'$ window')吗? – JcDenton86

+0

我正在使用本地存储工厂,我编辑了我的问题 –

回答

6

我以前也遇到同样的问题。我正在使用一些本地存储的全局变量。 你的代码似乎没问题。但是你可以优化它更好

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

你并不需要设置

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

因为你清除它们。

4

您可以在clear()方法添加到您的自定义localstorage服务:

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(); 
     } 
    } 

}]); 

注:我更新了你的服务中删除承诺,因为HTML5 localStorage is syncronous,并使用标准的get和set方法

然后在你控制器:

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