模型銷燬時,模型集合不會發出「同步」事件。文檔seems to say the opposite。這裏是我的代碼片段:模型銷燬時不會發出同步事件 - Backbonejs
var MyModel = Backbone.Model.extend({ id: 1, val: "foo" });
var MyCollection = Backbone.Collection.extend({ model: MyModel, url: '/api/models' });
var myCollection = new MyCollection();
myCollection.on('sync', function() { console.log('synced!'); });
myCollection.on('remove', function() { console.log('removed!'); });
myCollection.fetch(); // => outputs synced!
// .. wait for collection to load
myCollection.at(0).destroy(); // => outputs removed! but *NOT* synced!
如果我沒理解好,醫生說的「破壞」事件應該冒泡的收集和發出「同步」事件。上面代碼中的集合是否應該發出「同步」事件?
在上面的代碼中,我正在監聽集合上的同步,而不是模型:它不會被觸發。刪除事件IS觸發。我的問題不是關於那些事件。這是關於同步事件沒有被收集觸發。請閱讀我的代碼和問題。 – nakhli 2013-02-18 18:59:15
我讀過了。當在模型上觸發'sync'時,集合中的_onModelEvent觸發集合上的相同事件。把我建議的斷點放在一起,看看它是否被擊中,你可能會在同步中出現錯誤,這會導致你的問題。 – 2013-02-18 19:01:25
當你銷燬一個模型時,除非你傳遞'wait:true',否則樂觀地將它從集合中移除。這就是爲什麼你會得到'刪除'事件,而不是'同步'事件。同步不成功。 – 2013-02-18 19:05:25