0

ブラウザセッションストレージには

`mykey` `myvalue`

mykey は Session Storage セクションの Key 列にあり、myvalue は Session Storage セクションの Value 列にあります。

プロジェクトに実装された ngStorage (AngularJS モジュール) は正常に動作します - ngStorage によって書き込まれた値を読み書きします。ただし、値を保存するのではなく

mykey myvalue

しかし、

ngStorage-mykey "myvalue"

(彼が行う2つの異なること-プレフィックスngStorage-を追加し、myvalueを「」でラップします)。

問題は、別の (AngularJS モジュールではない) によって保存された ngStorage によるセッション値を読み取る方法です。

その結果、ngStorage 以外で保存されたものは$sessionStorage.mykeyまったく取得されません。myvalue

ハックなしでプレフィックス ngStorage- を他のものに変更することは可能ですが、別の問題は "" ラッパーです。

それで、 ngStorage によってではなく設定された ngStorage によって値を読み取る方法はありますか (つまり、プレフィックスプレフィックスがなく、 "" でラップされていないことを意味します)?

Hello World繰り返しますが、デフォルトでは、 $sessionStorage.message = "Hello World"; でテキストを保存したい場合。次に、ngStorage はデフォルトでプレフィックスを追加し (変更される場合があります)、次のように値に " " を追加します。

ngStorage-message "Hello World"

しかし、私は読む必要があります message Hello World

それを行う方法はありますか?

4

1 に答える 1

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;
}
于 2016-06-22T11:29:37.560 に答える