2015-08-03 18 views
7

Đây là mã của tôi.Làm thế nào để xóa dữ liệu localstorage trong ionic?

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

Tôi muốn xóa các biến truy cập token từ localStorage tôi, Nó làm việc tốt cho trình duyệt khi tôi sử dụng

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

Nhưng nó không làm việc cho App của tôi.

đây là nhà máy localStorage tôi

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

}]); 

Bất cứ ý tưởng?

+0

'truy cập-tokan' là lỗi đánh máy hoặc bạn có nó như thế này trong mã của bạn? Bạn đã thử sử dụng 'localstorage.clear()' (remove '$ window') chưa? – JcDenton86

+0

Tôi đang sử dụng nhà máy lưu trữ cục bộ, tôi đã chỉnh sửa câu hỏi của mình –

Trả lời

6

Tôi cũng đã phải đối mặt với cùng một vấn đề có nghĩa là thời gian trước đây. Tôi đã sử dụng một số biến số Toàn cục cho Bộ nhớ cục bộ. Mã của bạn có vẻ ổn. Nhưng bạn có thể tối ưu hóa nó tốt hơn

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

Bạn không cần phải thiết lập

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

bởi vì bạn đang thanh toán bù trừ chúng.

4

Bạn có thể thêm các phương pháp clear() để tùy chỉnh của bạn localstorage dịch vụ:

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

}]); 

Lưu ý: Tôi cập nhật dịch vụ của bạn loại bỏ lời hứa vì HTML5 localStorage is syncronous và sử dụng get tiêu chuẩn và thiết lập các phương pháp

Và sau đó trong bạn bộ điều khiển:

$scope.logout = function(){ 
    localstorage.clear(); 
    $ionicHistory.clearCache(); 
    $ionicHistory.clearHistory(); 
}; 
Các vấn đề liên quan