如何清除 Backbone.js 本地存储

pinkon5k  于 2022-11-24  发布在  其他
关注(0)|答案(5)|浏览(158)

javascript看起来很简单,只是localStorage.clear()。
有没有类似于 Backbone.js 本地存储的东西,如果没有,有人能告诉我如何做吗?
我想做这样的事:
删除(此))
但这不会指向那个元素,对吧?

thtygnil

thtygnil1#

从Collection中可以通过几种方法来实现这一点,但无论选择哪种方法,都必须在每个模型上调用destroy,这将在客户端和服务器端(localStorage充当的角色)运行sync并销毁它。

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

更新

根据评论,看起来不像这样的工作了。因为这仍然是标记为答案,包括答案,应该工作在下面,根据skcin7

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

gkn4icbw2#

我知道这有点像挖坟墓,但我一直在寻找一个解决这个问题的办法,现在有一段时间了,上面的片段似乎没有为我工作。我总是结束了收集的大小减少了一半,无论我如何尝试。
所以经过相当数量的摆弄,我想出了这个:

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

Backbone是“动态”删除项目的,所以如果你有40个项目,你将无法删除21个项目,因为只剩下20个项目了。奇怪的是,这似乎也影响了collection.each()函数,这对我来说真的是一个bug。

isr3a4wc

isr3a4wc3#

在任何情况下,只对集合进行迭代并对每个元素调用destroy都是不保存的。原因是在修改集合的同时对集合进行迭代会产生意想不到的结果。
最好先克隆集合,然后遍历此克隆。有关详细信息,请查看this.each not iterating through collection correctly
示例:

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

mnemlml84#

如果您不想以编程方式执行此操作,则可以始终打开开发人员模式(F12),导航到Resources选项卡,从左窗格中选择“Local Storage”,然后删除记录。

**更新:**在较新版本的Chrome中,“资源”选项卡已被“应用程序”选项卡取代。

bwntbbo3

bwntbbo35#

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

相关问题