javascript似乎很简单,只有localStorage.clear()。
是否有类似于骨干本地存储的内容,如果没有,有人可以指出我正确的方向如何做到这一点。
我正在考虑做这样的事情:
localStorage.each(localStorage.delete(本))
除了这不会指向那个元素吗?
答案 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
}