7

因此,我在 Google 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]返回未定义。我已经为 sync.set 参数(例如{ 'john32': ['fk35kd'] })尝试了使用文字值的相同代码,这似乎有效,所以我真的很困惑问题可能是什么。任何帮助,将不胜感激。

4

1 回答 1

17

谢谢罗布。如前所述,问题是试图插入accNameset 语句中的对象文字。我最终得到的是一个具有属性“accName”而不是其accName自身值的对象。这是一个修复。

var obj = {};
obj[accName] = accData;
chrome.storage.sync.set(obj, function() {
    alert('Data saved');
});

更新

ES6 现在允许在对象文字中计算属性名称,因此可以通过以下方式实现上述目标:

chrome.storage.sync.set({ [accName]: accData }, function() {
    alert('Data saved');
});
于 2013-06-28T04:23:08.697 回答