我有一個要求,當用戶在不同Backbone集合模型(通過單擊一個表格行)之間切換時,有關未保存更改的用戶「嘮叨」。我搜索了「檢查骨幹模型髒數據」(例如),沒有發現任何明確的。檢查集合中是否存在任何髒骨幹模型數據
我完成此使用underscore's "some"和isEqual functionality,其方式如下文中,「一些()」是否有任何未保存的變化(相對於什麼那些精確的變化可能是)足以確定,特別是因爲model屬性實際上是一個對象數組。
var anyDirty = _.some(myCollection.models, function(model) {
return !_.isEqual(model.get('nodes'), model.previousAttributes()['nodes]);
});
我是新來的骨幹,我想知道,如果這是一個公認的排序爲即席檢查髒模型數據的方法。或者,Backbone是否爲此提供了某種內置功能,我最初嘗試使用Google進行搜索時沒有發現?
關於http://stackoverflow.com/questions/9215036/backbone-js-is-there-a-change-since-last-server-save? – nikoshr
謝謝你指出。現在我意識到我沒有專門寫出我的問題。我想我想知道某個特定集合中的* any *模型是否已更改。在這種情況下,我使用_.some似乎仍然適用,但在迭代器內部,我可以使用'model.hasChanged()'而不是_.isEqual() –
您可以改爲聽取何時觸發change事件。堅持它作爲你收藏的一個州。一旦收集已經同步回服務器,清除它。然後只檢查該狀態屬性。我認爲在創建新模型時也會觸發'change',因此您可能還需要檢查'isNew()'。 – j03w