AngularJS中封装localStorage

作者: haibao 分类: 笔记 发布时间: 2016-10-27 16:02
活着, 如同生命最后一天般活着;学习, 如同永远活着般学习。——圣雄甘地 (印度国父)

如题,在项目中经常需要将一些数据存储在浏览器中,但又不想直接存cookie,于是用了localStorage。由于sessionStorage用不到,便没有一起封装。
顺便处理了在手机浏览器safari下,有些用户开启无痕浏览模式去访问网站,但是存储不了localStorage的情况,做了个异常处理提示。

好了,具体代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
/**
 * 封装localStorage的方法
 */
angular.module("pharmacyApp").factory('locals', ['$window', function($window){
    return{
        set: function(key,value){ //存储单个属性
            // 判断是否无痕浏览模式
            if (typeof localStorage === 'object') {
                try {
                    $window.localStorage[key] = escape(value);
                } catch (e) {
                    alert('Your web browser does not support storing settings locally. In Safari, the most common cause of this is using "Private Browsing Mode". Some settings may not save or some features may not work properly for you.');
                }
            }
        },
        get: function(key){  //读取单个属性
            // 判断是否无痕浏览模式
            if (typeof localStorage === 'object') {
                try {
                    return unescape($window.localStorage[key]);
                } catch (e) {
                    alert('Your web browser does not support storing settings locally. In Safari, the most common cause of this is using "Private Browsing Mode". Some settings may not save or some features may not work properly for you.');
                }
            }
        },
        getParam: function(c){ //读取单个属性中的某个属性
            var cookieValue = this.get(c);
            var theRequest = {};
            if(cookieValue){
                if (cookieValue.indexOf("&") != -1) {
                    var str = cookieValue.split("&");
                    for (var i = 0; i < str.length; i++) {
                        theRequest[str[i].split("=")[0]] = str[i].split("=")[1];
                    }
                }else{
                    theRequest[cookieValue.split("=")[0]] = cookieValue.split("=")[1];
                }
                return theRequest;
            }else{
                return false;
            }
        },
        setObject: function(key,value){ //存储对象,以JSON格式存储
            $window.localStorage[key] = JSON.stringify(value);
        },
        getObject: function (key) {  //读取对象
            return JSON.parse($window.localStorage[key] || '{}');
        },
        remove: function(key){ //删除缓存
            $window.localStorage[key] = '';
            delete $window.localStorage[key];
        }
    }
}]);

以上代码如果有问题的话,欢迎留言讨论。谢谢。

本文地址:[AngularJS中封装localStorage],如没有标注转载,均为原创,转载请保留出处和链接,欢迎分享 谢谢。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!

3 条评论

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>