在项目中遇到需要缓存数据,后退时把数据还原.
项目中使用了angularJS v1.6.6
// 获取当前数据
angular.module('app').service('oaSession', function() {
// 存储数据
// key:存储的字段, data:存储的数据, equalStr:存储的判断语句, callback:存储的回调
this.setValue = function(key, data, equalStr, callback) {
var listArr = [];
if (sessionStorage.getItem(key) != undefined) {
listArr = JSON.parse(sessionStorage.getItem(key));
var hasObj = false;
for (var i = 0; i < listArr.length; i++) {
// 判断是否在当前的存储数据中
if (eval(equalStr)) {
// 存在当前存储数据中时,执行回调,更新所需要的数据。
angular.isFunction(callback) && callback(listArr[i]);
hasObj = true;
break;
}
}
// 当前的存储数据没改数据时,直接加到存储数据中
if (!hasObj) {
listArr.push(data);
}
} else {
listArr.push(data);
}
sessionStorage.setItem(key, angular.toJson(listArr));
}
// 获取存储的数据
// key:存储数据的字段, equalStr:获取存储数据的判断语句
this.getValue = function(key, equalStr) {
var hasShow = false;
var returnData = {
hasShow: false,
listData: []
}
if (sessionStorage.getItem(key) != undefined) {
var listArr = angular.fromJson(sessionStorage.getItem(key));
for (var i = 0; i < listArr.length; i++) {
// 判断是否在当前的存储数据中
if (eval(equalStr)) {
// 获取该数据, 并返回值
returnData.listData = listArr[i];
returnData.hasShow = true;
break;
}
}
}
return returnData;
}
})
纯javascript
// 存储和获取sessionStorage数据
var sessionFn = function() {
// 存储数据
// key:存储的字段, data:存储的数据, equalStr:存储的判断语句, callback:存储的回调
this.setValue = function(key, data, equalStr, callback) {
var listArr = [];
if (sessionStorage.getItem(key) != undefined) {
listArr = JSON.parse(sessionStorage.getItem(key));
let hasObj = false;
for (let i = 0; i < listArr.length; i++) {
// 判断是否在当前的存储数据中
if (eval(equalStr)) {
// 存在当前存储数据中时,执行回调,更新所需要的数据。
typeof callback == ‘function’ && callback(listArr[i]);
hasObj = true;
break;
}
}
// 当前的存储数据没改数据时,直接加到存储数据中
if (!hasObj) {
listArr.push(data);
}
} else {
listArr.push(data);
}
sessionStorage.setItem(key, angular.toJson(listArr));
}
// 获取存储的数据
// key:存储数据的字段, equalStr:获取存储数据的判断语句
this.getValue = function(key, equalStr) {
var hasShow = false;
var returnData = {
hasShow: false,
listData: []
}
if (sessionStorage.getItem(key) != undefined) {
var listArr = JSON.stringify(sessionStorage.getItem(key));
for (let i = 0; i < listArr.length; i++) {
// 判断是否在当前的存储数据中
if (eval(equalStr)) {
// 获取该数据, 并返回值
returnData.listData = listArr[i];
returnData.hasShow = true;
break;
}
}
}
return returnData;
}
}
网友评论