移動端(h5),緩存數(shù)據(jù)sessionStorage

在項目中遇到需要緩存數(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;
    }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容