Skip to content

Instantly share code, notes, and snippets.

@dankahle
Last active August 29, 2015 14:05
Show Gist options
  • Save dankahle/57e3f48dfcb4b7aece97 to your computer and use it in GitHub Desktop.
Save dankahle/57e3f48dfcb4b7aece97 to your computer and use it in GitHub Desktop.
An example that stores session info on the client in sessionStorage if it exists, otherwise falls back to session cookies.
<!DOCTYPE html>
<html ng-app="app">
<head>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular.min.js"></script>
<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.3.0-beta.18/angular-cookies.min.js"></script>
</head>
<body ng-controller="ctrl">
<button ng-click="set()">set</button><br>
<button ng-click="get()">get</button><br>
<button ng-click="remove()">remove</button><br>
<script>
var app = angular.module('app', ['ngCookies']);
app.factory('repo', function ($cookieStore) {
var get = function (key) {
if (sessionStorage) {
var val = sessionStorage.getItem(key);
return val ? angular.fromJson(val) : val;
}
else
return $cookieStore.get(key);
};
set = function (key, val) {
if (sessionStorage)
sessionStorage.setItem(key, angular.toJson(val));
else
$cookieStore.put(key, val);
},
remove = function (key) {
if (sessionStorage)
return sessionStorage.removeItem(key);
else
$cookieStore.remove(key);
};
return {
get: get,
set: set,
remove: remove
};
});
app.controller('ctrl', function ($scope, repo, $cookies) {
$scope.set = function () {
repo.set('stuff', {name: 'dank', age: 50});
console.log("set: ", repo.get('stuff'));
}
$scope.get = function () {
console.log("get: ", repo.get('stuff'));
}
$scope.remove = function () {
repo.remove('stuff');
console.log("remove: ", repo.get('stuff'));
};
}); // ctrl
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment