2016-06-22 13 views
0

In dem Browser-Sitzung Speichervon session Lesen von ngStorage AngularJS, die von einer anderen Bibliothek

gespeichert wurde, die wir haben
`mykey` `myvalue` 

wo mykey in der Schlüsselspalte des Session-Speicherabschnittes und wo myvalue im Wert ist Spalte des Abschnitts Session Storage Alles ist klar.

ngStorage (ein AngularJS Modul) im Projekt implementiert und funktioniert einwandfrei - schreibt und liest Werte, die von ngStorage geschrieben wurde. Allerdings speichert er Wert nicht als

mykey myvalue 

aber als

ngStorage-mykey "myvalue" 

(zwei verschiedene Dinge, die er tut - fügt Präfix ngStorage- und Wraps MyValue mit "").

Die Frage ist: Wie Sitzungswert von ngStorage zu lesen, die von einem anderen (nicht einem AngularJS Modul) gespeichert wurde?

Als Ergebnis wird $sessionStorage.mykey nicht erhalten myvalue bei allen, die nicht von ngStorage gespeichert wurde.

Es ist möglich, ohne Hacks das Präfix zu ändern ngStorage- mit irgendetwas anderes, aber ein anderes Problem ist, „“ Wrapper.

Also, irgendwelche Ideen, wie die Werte von ngStorage, die nicht von ngStorage gesetzt wurden (das heißt ohne Präfixe Präfix und nicht von "") verpackt?

Wiederum standardmäßig, wenn Sie Hello World Text von $ sessionStorage.message = "Hallo Welt" speichern möchten; ngStorage wird Präfix standardmäßig (kann geändert werden) hinzufügen und fügen Sie auf den Wert „“ wie folgt dann: Irgendwelche Ideen, wie zu tun

ngStorage-message"Hello World"

Aber ich brauche zu lesen messageHello World

Das?

Antwort

1

standardmäßig die Serializer/Deserializer von ngStorage verwendet werden, sind angular.toJson/angular.fromJson. Dies ist über den Anbieter konfigurierbar.

angular.toJson würde wickeln einen String mit“.

du $ sessionStorageProvider in Ihrem Modul Config tun können, nach der Injektion,

$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; 
}