Чтение из sessionStorage с помощью ngStorage AngularJS, которое было сохранено другой библиотекой

В хранилище сессии браузера мы имеем

`mykey` `myvalue`

где mykey находится в столбце Key раздела Session Storage, а myvalue находится в столбце Value раздела Session Storage Все ясно.

ngStorage (модуль AngularJS) реализован в проекте и отлично работает - записывает и читает значения, которые были записаны ngStorage. Однако это хранит ценность не как

mykey myvalue

но, как

ngStorage-mykey "myvalue"

(две разные вещи он делает - добавляет префикс ngStorage- и переносит мое значение на "").

Вопрос в том, как прочитать значение сеанса с помощью ngStorage, которое было сохранено другим (не модулем AngularJS)?

В результате, $sessionStorage.mykey не получит myvalue при всем, что было сохранено не ngStorage.

Можно без взлома изменить префикс ngStorage - на что-нибудь еще, но другая проблема - это "" обертки.

Итак, есть ли идеи, как читать значения с помощью ngStorage, которые были установлены НЕ с помощью ngStorage (это означает, что без префикса префикса, а не "")?

Опять же, по умолчанию, если вы хотите сохранить Hello World text by $sessionStorage.message = "Hello World"; тогда ngStorage добавит префикс по умолчанию (может быть изменен) и добавит "" к значению, как это:

ngStorage-message"Hello World"

Но мне нужно прочитать messageHello World

Есть идеи, как это сделать?

1 ответ

Решение

По умолчанию сериализатор / deSerializer, используемый 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;
}
Другие вопросы по тегам