如何清除骨干本地存储

时间:2012-03-28 16:12:05

标签: backbone.js local-storage clear

javascript似乎很简单,只有localStorage.clear()。

是否有类似于骨干本地存储的内容,如果没有,有人可以指出我正确的方向如何做到这一点。

我正在考虑做这样的事情:

localStorage.each(localStorage.delete(本))

除了这不会指向那个元素吗?

5 个答案:

答案 0 :(得分:5)

你可以从Collection中做到这一点,但无论你选择哪种方式,都必须在每个模型上调用destroy,它将在客户端和服务器端运行同步并销毁它(localStorage正在执行如)。

collection.each(function(model) {
      model.destroy();
    }
)

<强>更新

根据评论,看起来不再适用了。因为这仍然标记为答案,包括下面应该起作用的答案,每skcin7

while ((model=collection.shift())) 
    { model.destroy();
}

答案 1 :(得分:5)

我知道这种感觉就像严重的挖掘,但我一直在寻找解决方案一段时间,上面的代码片段似乎都不适合我。无论我如何尝试,我总是把收集的大小减少一半。

所以经过大量的摆弄后,我想出了这个:

var length = collection.length;
for (var i = 0; i < length; i++) {
    collection.at(0).destroy();
}

Backbone正在“动态”删除项目,因此,如果您有40个项目,则无法删除21.项目,因为只剩下20个项目。奇怪的是,这似乎也影响了collection.each()函数,这对我来说真的像个错误..

答案 2 :(得分:1)

在任何情况下,只是迭代集合并在每个元素上调用destroy都不会保存。 原因是迭代修改集合同时会产生意想不到的结果。

最好首先克隆集合并迭代此克隆。结帐this.each not iterating through collection correctly了解更多详情。

示例:

_.chain(Todos.models).clone().each(function(model){
  console.log('deleting model ' + model.id);
  model.destroy();
});

答案 3 :(得分:1)

如果您不想以编程方式执行此操作,您可以随时打开开发人员模式(F12),导航到“资源”选项卡,选择“#34;本地存储”&#34;从左侧窗格中删除记录。

更新:在较新版本的Chrome中,“资源”标签已替换为“应用程序”标签。

答案 4 :(得分:0)

// dc was so close!
let model;
while ( model = collection.at(0) ) {
    model.destroy();  // removes model from server and collection
}