zupit.service('Zupit.Core.PersistenceService', ['$state','$stateParams', function ($state,$stateParams) { var ret= { states: {}, set:function(name, val) { this.states[name] = val; }, get:function(name) { return this.states[name]; }, exist:function(name) { return this.get(name) !== undefined; }, getStateName:function(state,params) { return state.name + JSON.stringify(params); }, saveState: function (data,state, params) { state = state || $state.current; params = params || $stateParams; this.states[this.getStateName(state,params)] = { scroll: $(window).scrollTop(), state: data }; }, removeState: function (state, params) { if (this.states[this.getStateName(state, params)]!==undefined) delete this.states[this.getStateName(state, params)]; }, loadState: function (state, params) { state = state || $state.current; params = params || $stateParams; if (this.states[this.getStateName(state, params)] === undefined) return null; var ret = this.states[this.getStateName(state, params)]; $(window).scrollTop(ret.scroll); return ret.state; }, hasState:function(state, params) { return this.loadState(state, params) !== null; }, saveOnStorage: function () { sessionStorage.setItem('PersistenceService', JSON.stringify(this.states)); }, loadFromStorage: function () { var item = sessionStorage.getItem('PersistenceService'); if (item !== undefined && item !== null) this.states = JSON.parse(item); } } ret.loadFromStorage(); return ret; } ]);