我想從一個集合中刪除一個模型:如何從一個Backbone.Collection刪除模型
var item = new Backbone.Model({
id: "01",
someValue: "blabla",
someOtherValue: "boa"
});
var list = new Backbone.Collection([item]);
list.get("01").destroy();
結果:
產品仍是骨幹陣列中....
我想從一個集合中刪除一個模型:如何從一個Backbone.Collection刪除模型
var item = new Backbone.Model({
id: "01",
someValue: "blabla",
someOtherValue: "boa"
});
var list = new Backbone.Collection([item]);
list.get("01").destroy();
結果:
產品仍是骨幹陣列中....
您還應該從集合中刪除模型。
var model = list.get('01');
model.destroy();
list.remove(model);
我對接受的答案有所保留。當一個模型被銷燬時,這個「銷燬」事件會通過模型所在的任何集合冒泡。因此,當你銷燬一個模型時,你不應該從列表中刪除這個模型。
model.destroy();
應該足夠了。
看你的代碼看起來正確的:(如果目的是摧毀+刪除,而不只是刪除)
list.get('01').destroy();
你確定你的資源是越來越正確銷燬?你有沒有嘗試在你的destroy()調用中放置一個成功和錯誤回調以確保執行銷燬?例如,如果您的模型URL不正確並且無法訪問資源,那麼destroy調用將返回一個錯誤,您的集合仍然會有該模型。這會顯示你在你的問題中概述的症狀。
通過在銷燬調用之後放置remove(),您的集合將一定刪除該模型。但是這種模式仍然存在(仍然存在)。這可能是你想要的,但是因爲你在調用destroy(),我假設你想完全消除它。如果是這種情況,雖然刪除似乎工作,但它實際上做的是掩蓋您的模型已被銷燬,但事實上它可能不會。
因此,這是我有一種感覺實際上正在發生。有些東西阻止了模型的銷燬。這就是爲什麼當你調用destroy(),然後檢查你的集合 - 模型仍然存在。
雖然我可能是錯的。你能檢查一下並更新你的發現嗎?