如何从Backbone.Collection中删除模型

时间:2012-08-25 16:17:12

标签: javascript arrays backbone.js

我想从集合中删除模型:

var item = new Backbone.Model({
    id: "01",
    someValue: "blabla",
    someOtherValue: "boa"
});

var list = new Backbone.Collection([item]);

list.get("01").destroy();

结果:

项仍然在骨干数组....

2 个答案:

答案 0 :(得分:3)

我对接受的答案有所保留。当模型被销毁时,“destroy”事件会在模型所在的任何集合中冒泡。因此,当您销毁模型时,您不必从列表中删除模型。

model.destroy();

应该够了。

查看你的代码看起来是正确的:(如果意图是销毁+删除,而不仅仅是删除)

list.get('01').destroy();

您确定您的资源被正确销毁了吗?您是否尝试在destroy()调用中放置成功和错误回调以确保执行销毁?例如,如果您的模型URL不正确且无法访问资源,则destroy调用将返回错误,您的集合仍将具有该模型。这将显示您在问题中列出的症状。

通过在destroy调用之后放置remove(),您的集合肯定会删除模型。但是那个模型仍然会浮动(仍然存在)。这可能是你想要的,但是因为你正在调用destroy()我假设你想完全删除它。如果是这种情况,虽然删除似乎有效,但它实际上正在做的是掩盖你的模型已经被破坏,而事实上它可能没有。

因此,这就是我感觉到的实际情况。有些东西阻止了模型被破坏。这就是为什么当你调用destroy()时,然后检查你的收藏 - 模型仍在那里。

我可能错了。你能检查一下并更新你的发现吗?

答案 1 :(得分:2)

您还应该从集合中删除模型。

var model = list.get('01');
model.destroy();
list.remove(model);