AngularJS中封装localStorage

haibao 笔记 2016-10-27 16:02 703
一个人的价值, 在于他贡献了什么, 而不在于他获得了什么。——爱因斯坦

凌晨好, 本文除去代码部分,共1549个字,预计阅读时间需要4分钟。

如题,在项目中经常需要将一些数据存储在浏览器中,但又不想直接存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

本文地址:http://www.hehaibao.com/angularjs-localstorage/

版权声明:本博客所有文章除特别声明外,均采用 CC BY-NC-SA 3.0 许可协议。转载请注明出处!

3条评论

发表评论

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