javascript看起来很简单,只是localStorage.clear()。有没有类似于 Backbone.js 本地存储的东西,如果没有,有人能告诉我如何做吗?我想做这样的事:删除(此))但这不会指向那个元素,对吧?
thtygnil1#
从Collection中可以通过几种方法来实现这一点,但无论选择哪种方法,都必须在每个模型上调用destroy,这将在客户端和服务器端(localStorage充当的角色)运行sync并销毁它。
collection.each(function(model) { model.destroy(); } )
更新
根据评论,看起来不像这样的工作了。因为这仍然是标记为答案,包括答案,应该工作在下面,根据skcin7。
skcin7
while ((model=collection.shift())) { model.destroy(); }
gkn4icbw2#
我知道这有点像挖坟墓,但我一直在寻找一个解决这个问题的办法,现在有一段时间了,上面的片段似乎没有为我工作。我总是结束了收集的大小减少了一半,无论我如何尝试。所以经过相当数量的摆弄,我想出了这个:
var length = collection.length; for (var i = 0; i < length; i++) { collection.at(0).destroy(); }
Backbone是“动态”删除项目的,所以如果你有40个项目,你将无法删除21个项目,因为只剩下20个项目了。奇怪的是,这似乎也影响了collection.each()函数,这对我来说真的是一个bug。
isr3a4wc3#
在任何情况下,只对集合进行迭代并对每个元素调用destroy都是不保存的。原因是在修改集合的同时对集合进行迭代会产生意想不到的结果。最好先克隆集合,然后遍历此克隆。有关详细信息,请查看this.each not iterating through collection correctly。示例:
_.chain(Todos.models).clone().each(function(model){ console.log('deleting model ' + model.id); model.destroy(); });
mnemlml84#
如果您不想以编程方式执行此操作,则可以始终打开开发人员模式(F12),导航到Resources选项卡,从左窗格中选择“Local Storage”,然后删除记录。
**更新:**在较新版本的Chrome中,“资源”选项卡已被“应用程序”选项卡取代。
bwntbbo35#
// dc was so close! let model; while ( model = collection.at(0) ) { model.destroy(); // removes model from server and collection }
5条答案
按热度按时间thtygnil1#
从Collection中可以通过几种方法来实现这一点,但无论选择哪种方法,都必须在每个模型上调用destroy,这将在客户端和服务器端(localStorage充当的角色)运行sync并销毁它。
更新
根据评论,看起来不像这样的工作了。因为这仍然是标记为答案,包括答案,应该工作在下面,根据
skcin7
。gkn4icbw2#
我知道这有点像挖坟墓,但我一直在寻找一个解决这个问题的办法,现在有一段时间了,上面的片段似乎没有为我工作。我总是结束了收集的大小减少了一半,无论我如何尝试。
所以经过相当数量的摆弄,我想出了这个:
Backbone是“动态”删除项目的,所以如果你有40个项目,你将无法删除21个项目,因为只剩下20个项目了。奇怪的是,这似乎也影响了collection.each()函数,这对我来说真的是一个bug。
isr3a4wc3#
在任何情况下,只对集合进行迭代并对每个元素调用destroy都是不保存的。原因是在修改集合的同时对集合进行迭代会产生意想不到的结果。
最好先克隆集合,然后遍历此克隆。有关详细信息,请查看this.each not iterating through collection correctly。
示例:
mnemlml84#
如果您不想以编程方式执行此操作,则可以始终打开开发人员模式(F12),导航到Resources选项卡,从左窗格中选择“Local Storage”,然后删除记录。
**更新:**在较新版本的Chrome中,“资源”选项卡已被“应用程序”选项卡取代。
bwntbbo35#