Backbone.js 清除主干集合中的所有元素,并将它们从关联的Lawnchair中删除
我正在使用Backbone.js和 我想知道“清空”集合(来自应用程序和本地存储)的正确方法是什么 目前,我正在采用以下方法: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
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。