我有一個「資產」骨幹模型有一個自定義屬性稱爲「選定」。它的自定義,它不是服務器端對象的一部分。我用來表示用戶當前選擇的資產列表中的哪一個。我怎樣才能堅持通過集合獲取自定義屬性
var Asset = Backbone.Model.extend({
defaults: {
selected: false
},
idAttribute: "AssetId"
});
此模型是我定期從服務器獲取任何更改的骨幹集合的一部分。
我遇到的問題是,每次我獲取集合時,集合都會進行重置(我可以通過偵聽重置事件來判斷),因此所選屬性的值將被數據刪除來自ajax請求。
backbone.js文檔似乎暗示有智能合併可以解決這個問題。我相信我在我的獲取方法
allAssets.fetch({ update: true ,cache: false});
這樣做的,我還設置了「idAttribute」字段中模式,使進入的對象的ID可與集合中的對象進行比較。
我已經解決了這一問題的方法是在我的收藏對象
parse: function (response) {
// ensure that the value of the "selected" for any of the models
// is persisted into the model in the new collection
this.each(function(ass) {
if (ass.get("selected")) {
var newSelectedAsset = _.find(response, function(num) { return num.AssetId == ass.get("AssetId"); });
newSelectedAsset.selected = true;
}
});
return response;
}
寫我自己的解析方法有沒有更好的方式來做到這一點?