これが私のコードです。
$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からaccess-token変数を削除したいのですが、使用するとブラウザーで正常に動作します
$window.localStorage.clear();
$window.localStorage.removeItem(access-token);
しかし、それは私のアプリでは機能しません。
これが私のローカルストレージ工場です
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] || '{}');
}
}
}]);
何か案が?
以前にも同じ問題に直面していた。 ローカルストレージのグローバル変数を使用していました。コードは問題ないようです。しかし、あなたはそれをより最適化することができます
$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);
あなたがそれらをクリアしているので。
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();
};