移动端(h5),缓存数据sessionStorage

在项目中遇到需要缓存数据,后退时把数据还原.
项目中使用了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;
    }
}

你可能感兴趣的:(移动端(h5),缓存数据sessionStorage)