在項目中遇到需要緩存數(shù)據(jù),后退時把數(shù)據(jù)還原.
項目中使用了angularJS v1.6.6
// 獲取當前數(shù)據(jù)
angular.module('app').service('oaSession', function() {
// 存儲數(shù)據(jù)
// key:存儲的字段, data:存儲的數(shù)據(jù), equalStr:存儲的判斷語句, callback:存儲的回調(diào)
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++) {
// 判斷是否在當前的存儲數(shù)據(jù)中
if (eval(equalStr)) {
// 存在當前存儲數(shù)據(jù)中時,執(zhí)行回調(diào),更新所需要的數(shù)據(jù)。
angular.isFunction(callback) && callback(listArr[i]);
hasObj = true;
break;
}
}
// 當前的存儲數(shù)據(jù)沒改數(shù)據(jù)時,直接加到存儲數(shù)據(jù)中
if (!hasObj) {
listArr.push(data);
}
} else {
listArr.push(data);
}
sessionStorage.setItem(key, angular.toJson(listArr));
}
// 獲取存儲的數(shù)據(jù)
// key:存儲數(shù)據(jù)的字段, equalStr:獲取存儲數(shù)據(jù)的判斷語句
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++) {
// 判斷是否在當前的存儲數(shù)據(jù)中
if (eval(equalStr)) {
// 獲取該數(shù)據(jù), 并返回值
returnData.listData = listArr[i];
returnData.hasShow = true;
break;
}
}
}
return returnData;
}
})
純javascript
// 存儲和獲取sessionStorage數(shù)據(jù)
var sessionFn = function() {
// 存儲數(shù)據(jù)
// key:存儲的字段, data:存儲的數(shù)據(jù), equalStr:存儲的判斷語句, callback:存儲的回調(diào)
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++) {
// 判斷是否在當前的存儲數(shù)據(jù)中
if (eval(equalStr)) {
// 存在當前存儲數(shù)據(jù)中時,執(zhí)行回調(diào),更新所需要的數(shù)據(jù)。
typeof callback == ‘function’ && callback(listArr[i]);
hasObj = true;
break;
}
}
// 當前的存儲數(shù)據(jù)沒改數(shù)據(jù)時,直接加到存儲數(shù)據(jù)中
if (!hasObj) {
listArr.push(data);
}
} else {
listArr.push(data);
}
sessionStorage.setItem(key, angular.toJson(listArr));
}
// 獲取存儲的數(shù)據(jù)
// key:存儲數(shù)據(jù)的字段, equalStr:獲取存儲數(shù)據(jù)的判斷語句
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++) {
// 判斷是否在當前的存儲數(shù)據(jù)中
if (eval(equalStr)) {
// 獲取該數(shù)據(jù), 并返回值
returnData.listData = listArr[i];
returnData.hasShow = true;
break;
}
}
}
return returnData;
}
}