【问题标题】:Read from sessionStorage by ngStorage AngularJS that was saved by another libraryngStorage AngularJS 从 sessionStorage 中读取,它由另一个库保存
【发布时间】:2016-06-22 11:07:16
【问题描述】:

在我们的浏览器会话存储中

`mykey` `myvalue`

mykey 位于 Session Storage 部分的 Key 列中 和 其中 myvalue 在 Session Storage 部分的 Value 列中 一切都清楚了。

ngStorage(一个 AngularJS 模块)在项目中实现并且工作正常 - 写入和读取由 ngStorage 写入的值。但是它存储的价值不是

mykey myvalue

但是作为

ngStorage-mykey "myvalue"

(他做了两件事 - 添加前缀 ngStorage- 并用“”包装 myvalue)。

问题是:如何通过 ngStorage 读取由另一个(不是 AngularJS 模块)保存的会话值?

因此,$sessionStorage.mykey 根本不会得到不是由 ngStorage 保存的myvalue

无需修改就可以将前缀 ngStorage- 更改为其他任何内容,但另一个问题是“”包装器。

那么,有什么想法可以通过 ngStorage 读取不是由 ngStorage 设置的值(这意味着没有任何前缀前缀并且没有被 "" 包裹)?

同样,默认情况下,如果您想通过 $sessionStorage.message = "Hello World"; 保存 Hello World 文本;那么 ngStorage 将默认添加前缀(可能会更改)并将“”添加到值中,如下所示:

ngStorage-message"Hello World"

但我需要阅读 messageHello World

有什么办法吗?

【问题讨论】:

    标签: javascript angularjs session session-storage ng-storage


    【解决方案1】:

    默认情况下,ngStorage 使用的序列化器/反序列化器是 angular.toJson / angular.fromJson。这可以通过提供程序进行配置。

    angular.toJson 会用 ".

    包裹一个字符串

    您可以在注入 $sessionStorageProvider 后在模块配置中执行此操作,

    $sessionStorageProvider.setKeyPrefix('');
    
    $sessionStorageProvider.setSerializer(mySerializer);
    $sessionStorageProvider.setDeserializer(myDeserializer);
    
    function mySerializer(obj) {
        if(angular.isObject(obj)) {
            return angular.toJson(obj);
        }
    
        return obj;
    }
    
    function myDeserializer(str) {
        if(str && str.charAt(0) === '"') {
            return angular.fromJson(str);
        }
    
        return str;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-30
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 2022-11-25
      相关资源
      最近更新 更多