Demo of $q and session storage in angular
HTML
<div ng-app="myApp" ng-controller="mainController as main">
<input ng-model="main.user" type="text" />
<button ng-click="main.save()">Save</button>
<button ng-click="main.getUser()">Get</button>
<button ng-click="main.clearUser()">Clear</button>
<p>{{main.userFromStorage}}</p>
</div>
JavaScript
angular.module('myApp', []).controller('mainController', ['sessionStorageService', function (sessionStorageService) {
var vm = this;
this.user = '';
this.save = function () {
sessionStorageService.setCurrentUser({
'name': this.user
});
};
this.clearUser = function () {
sessionStorageService.clearCurrentUser();
};
this.getUser = function () {
sessionStorageService.getCurrentUser().then(function (user) {
vm.userFromStorage = user;
}, function () {
vm.userFromStorage = 'No user !!!';
});
};
}]).service('sessionStorageService', ['$window', '$q', function ($window, $q) {
this.setCurrentUser = function (user) {
$window.sessionStorage.setItem('currentUser', JSON.stringify(user));
},
this.getCurrentUser = function () {
if ($window.sessionStorage.getItem('currentUser')) {
return $q.when(JSON.parse($window.sessionStorage.getItem('currentUser')));
} else {
var deferred = $q.defer();
deferred.reject('No Login User');
return deferred.promise;
}
};
this.clearCurrentUser = function () {
$window.sessionStorage.removeItem('currentUser');
};
}]);