所以我对谷歌Chrome上的本地存储有点疑虑。根据我的研究,我的语法似乎是正确的,但由于某种原因,价值没有被保存。这是我的代码:
chrome.storage.sync.get(accName, function(data) {
var accData = data[accName];
// Stuff
chrome.storage.sync.set({ accName: accData }, function() {
alert('Data saved');
});
});
每次重新运行时,data[accName]
都会返回undefined。我已经尝试使用sync.set参数的文字值相同的代码(例如。{ 'john32': ['fk35kd'] }
),这似乎有效,所以我真的很困惑这个问题是什么。任何帮助将不胜感激。
答案 0 :(得分:10)
谢谢罗布。如上所述,问题是尝试将accName
插入set语句中的对象文字。我最终得到的是一个具有属性'accName'的对象,而不是accName
本身的值。这是一个修复。
var obj = {};
obj[accName] = accData;
chrome.storage.sync.set(obj, function() {
alert('Data saved');
});
ES6现在允许computed property names in object literals,因此可以通过以下方式实现上述目标:
chrome.storage.sync.set({ [accName]: accData }, function() {
alert('Data saved');
});