Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Backbone.js 清除主干集合中的所有元素,并将它们从关联的Lawnchair中删除_Backbone.js_Javascript_Lawnchair - Fatal编程技术网

Backbone.js 清除主干集合中的所有元素,并将它们从关联的Lawnchair中删除

Backbone.js 清除主干集合中的所有元素,并将它们从关联的Lawnchair中删除,backbone.js,javascript,lawnchair,Backbone.js,Javascript,Lawnchair,我正在使用Backbone.js和 我想知道“清空”集合(来自应用程序和本地存储)的正确方法是什么 目前,我正在采用以下方法: Favorites.Collection = Backbone.Collection.extend({ model: Favorites.Model, lawnchair: new Lawnchair({ name: "favorites" }, function(e){}), empty: function(){ this.lawnchair.n

我正在使用Backbone.js和

我想知道“清空”集合(来自应用程序和本地存储)的正确方法是什么

目前,我正在采用以下方法:

Favorites.Collection = Backbone.Collection.extend({
  model: Favorites.Model,
  lawnchair: new Lawnchair({ name: "favorites" }, function(e){}),

  empty: function(){
    this.lawnchair.nuke();
    this.fetch();
  }
});
这实质上是销毁localStorage中的元素(lawnchair提供了nuke方法)并从localStorage获取。这似乎有点笨重,我想知道我是否在思考这个问题——或者是否有更好的方法


干杯

主干遵循某种RESTish原则,遗憾的是REST没有描述批量删除过程。一次只能删除一个资源。通常,API不支持对整个集合URI(如
DELETE/favorites
)进行HTTP删除,只支持
DELETE/favorites/42
——一次删除一个。因此,没有一个主干方法可以做到这一点,因为通常情况下,集合主要设计为执行fetch/GET,然后委托给各个模型执行保存和删除。因此,是的,您可以自行选择批量删除方法。您可以做一些更像RPC的事情,并将ID列表传递给delete过程,但是您上面所做的对我来说似乎已经足够了,是的,直接删除所有ID,然后重新获取集合对我来说也是非常合理的。所以我认为您的解决方案很好,但我也很好奇其他人的建议。

“调用collection.reset()而不传递任何模型作为参数将清空整个集合。”reset清空集合,但不会保持状态。换句话说,当我重新设置集合时,lawnchair没有受到攻击。我想你在哪里要求一个比清除状态/获取空状态更好的方法。我建议清除状态/重置集合。您还可以覆盖collection.reset以清除状态,并调用原始的reset。