在浏览器 session 存储中我们有
`mykey` `myvalue`
其中 mykey 位于 session 存储部分的 Key 列中 和 其中 myvalue 位于 session 存储部分的值列中 一切都清楚了。
ngStorage(一个 AngularJS 模块)在项目中实现并且工作正常 - 写入和读取由 ngStorage 写入的值。然而,它存储的值(value)并不像
mykey myvalue
但是作为
ngStorage-mykey "myvalue"
(他做了两件不同的事情 - 添加前缀 ngStorage-
并用“”包装 myvalue)。
问题是:如何通过 ngStorage 读取由另一个(不是 AngularJS 模块)保存的 session 值?
因此,$sessionStorage.mykey
根本无法获取不是由 ngStorage 保存的 myvalue
。
无需黑客就可以用其他任何东西更改前缀 ngStorage- ,但另一个问题是“”包装器。
那么,有什么想法如何通过 ngStorage 读取不是由 ngStorage 设置的值(这意味着没有任何前缀 prefix 并且不被 ""包裹)?
同样,默认情况下,如果您想通过 $sessionStorage.message = "Hello World"; 保存 Hello World
文本。那么 ngStorage 将默认添加前缀(可能会更改),并将“”添加到值中,如下所示:
ngStorage-message
“Hello World”
但我需要阅读
消息
Hello World
有什么想法可以做到这一点吗?
最佳答案
默认情况下,ngStorage 使用的序列化器/反序列化器是 Angular.toJson/Angular.fromJson。这可以通过提供商进行配置。
angular.toJson 会用“.”包裹一个字符串
您可以在注入(inject) $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;
}
关于javascript - ngStorage AngularJS 从 sessionStorage 读取由另一个库保存的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37966221/