Ich baue eine Verlängerung Chrom und haben einen Fehler gestoßen ich nicht meinen Kopf herum wickeln kann. Das Problem ist eine einzelne Objekteigenschaft, die in Chromes-Speicher null
wird.Objekteigenschaft wird null nach chrome.storage.sync.set
Ich teste dies tun:
console.log("pre-storage", settings);
var obj = {};
obj[storage_key] = settings;
chrome.storage.sync.set(obj, function() {
chrome.storage.sync.get(storage_key, function(data) {
console.log("post-storage", data[storage_key]);
});
});
Dies ist die Ausgabe:
pre-storage, Object {
...
soundClip: Object {
options: Array[5],
selected: Object {
label: "Soft2",
value: "snd/soft2.wav"
}
}
}
post-storage, Object {
...
soundClip: Object {
options: Array[5],
selected: null
}
}
Speichern JSON.parse(JSON.stringify(obj))
statt obj
scheint direkt dies zu beheben. Hat jemand irgendwelche Ideen, was das verursachen könnte? Jede Hilfe wird geschätzt!
Edit: eine tiefe Kopie von obj
So dass es nicht beheben.
Edit2: Ich sollte auf erweitern, wie settings.soundClip
gesetzt. Ich verwende Angular (1.x) und verwende eine benutzerdefinierte Auswahlanweisung. Die abgespeckte Richtlinie sieht wie folgt aus:
function mySelect() {
return {
restrict: "E",
templateUrl: "mySelect.html",
scope: {
options: "=",
selected: "="
},
link: function (scope) {
scope.select = function (item) {
scope.selected = item;
};
}
}
}
Richtlinie Vorlage Ansicht (mySelect.html
):
<div>
<div ng-repeat="item in options track by $index"
ng-click="select(item)">
</div>
</div>
Die Eigenschaften sind dann zwei-Wege wie folgt gebunden:
<my-select selected="settings.soundClip.selected"
options="settings.soundClip.options">
</my-select >
Danke für die Antwort! Leider führt die Verwendung von "test" anstelle von "storage_key" zu denselben Ergebnissen. – Easypeasy
Richtig, und da Sie den Wert mit storage_key aussteigen, nehme ich an, dass das funktioniert. Ich würde mir ansehen, wie Sie den Wert in settings.soundClip.selected (oder eine ähnliche Wörterbuchsyntax) setzen, da dies der einzige Teil ist, der das Problem hat, nur um klar zu sein. Entschuldigung für jede Verwirrung. – eholder0
Ja, das könnte von Interesse sein, ich habe zusätzliche Informationen zur ursprünglichen Frage hinzugefügt! – Easypeasy