【问题标题】:chrome.storage.sync.set not saving valueschrome.storage.sync.set 不保存值
【发布时间】:2013-06-26 23:09:59
【问题描述】:

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

【问题讨论】:

标签: javascript google-chrome google-chrome-extension local-storage


【解决方案1】:

问题是试图将accName 插入到 set 语句内的对象文字中(归功于上面的 Rob)。我最终得到的是一个具有属性“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');
});

【讨论】:

  • 我可以这样设置多个值吗?
  • @Unnikrishnan 据我所知,没有一个声明。
  • obj[accName] = accData;这里你只设置了一个值,我们可以在这里添加更多值吗?
  • @Unnikrishnan 仅适用于相同方式的后续语句。
  • 显然您还可以执行以下操作:chrome.storage.sync.set({ [accName]: accData }, ...)
猜你喜欢
  • 2015-10-16
  • 1970-01-01
  • 2018-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多