我想从集合中删除模型:
var item = new Backbone.Model({
id: "01",
someValue: "blabla",
someOtherValue: "boa"
});
var list = new Backbone.Collection([item]);
list.get("01").destroy();
结果:
项仍然在骨干数组....
答案 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);