localStorage的高级操作写法

24 篇文章 2 订阅
3 篇文章 0 订阅
define(function() {


  var storageUtil = {
  };


  var STORAGE_KEY = {
    PAGE_PARA : "page_parameter_v1"
  }

  storageUtil.get = function(key) {
    var store = localStorage.getItem(key);
    if (store) {
      try {
        store = JSON.parse(store);
      } catch (e) {
        store = undefined;
        this.remove(key);
      }
    }
    
    return $.Deferred().resolve(store || {}).promise();
  };
  
  storageUtil.set = function(key, value) {
    localStorage.setItem(key, JSON.stringify(value));
    return $.Deferred().resolve(value).promise();
  };
  
  storageUtil.put = function(key, value) {
    var me = this;
    return this.get(key)
    .then(function(data) {
      value = $.extend(data || {}, value || {});
      return me.set(key, value);
    });
  };
  
  storageUtil.remove = function(key) {
    localStorage.removeItem(key);
  };

  storageUtil.setParam = function(key, para) {
    var me = this;
    return this.get(STORAGE_KEY.PAGE_PARA)
    .then(function(data) {
      data = data || {};
      data[key] = para;
      return me.set(STORAGE_KEY.PAGE_PARA, data);
    });
  };
  
  storageUtil.putParam = function(key, para) {
    var me = this;
    return this.get(STORAGE_KEY.PAGE_PARA)
    .then(function(data) {
      data = data || {};
      data[key] = $.extend((data[key] || {}), para);
      return me.set(STORAGE_KEY.PAGE_PARA, data);
    });
  };
  
  storageUtil.getParam = function(key) {
    var me = this;
    return this.get(STORAGE_KEY.PAGE_PARA)
    .then(function(data) {
      data = data || {};


      return $.extend(data[key], storageUtil.getUrlParam());
    });
  };
  
  storageUtil.removeParam = function(key) {
    return this.setParam(key);
  };
  
  storageUtil.removeSubParam = function(key, subKey) {
    var me = this;
    return this.get(STORAGE_KEY.PAGE_PARA)
    .then(function(data) {
      if (data) {
        delete data[key][subKey];
        return me.set(STORAGE_KEY.PAGE_PARA, data);
      }
    });
  };


  storageUtil.getUrlParam = function(url) {
    var query = url || window.location.search;
    var start = query.indexOf('?');
    if (start > -1) {
      query = query.substring(start + 1);
    }


    var paras = {};
    if (query) {
      var queryParams = query.split('&');
      for ( var k in queryParams) {
        var param = queryParams[k].split('=');
        paras[param[0]] = decodeURIComponent(param[1]) || "";
      }
    }
    return paras;
  };
  
  return storageUtil;

});



//调用

例如:

//存储到localStorage
storageUtil.setParam("inputCDkey",{shareAgreedTo:shareAgreedTo});


storageUtil.getParam("inputCDkey").then(function(data) {
    var shareAgreedTo = data.shareAgreedTo;
    if(shareAgreedTo){
    $(".shade").hide();
    $scope.pickUpService = shareAgreedTo;
    }else{
    $(".shade").show();
    }
});


/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值