我正在使用具有一些定義自身以及PlaylistItem集合的屬性的播放列表對象。將JSON數據轉換爲具有子集合的Backbone模型
當我收到從我的服務器的數據,我得到了我的客戶端的成功方法,它的JSON響應:
success: function (data) {
console.log("JSON data:", data);
playlists = _.map(data, function (playlistConfig) {
return new Playlist(playlistConfig);
});
...
}
在這裏,我在我的JSON數據轉換成播放列表對象。每個播放列表對象都是一個Backbone.Model。
這裏是我的數據的外觀:
而這裏的播放列表構造的樣子:
return function(config) {
var playlist = new Playlist(config);
return playlist;
};
var Playlist = Backbone.Model.extend({
defaults: function() {
return {
id: null,
userId: null,
title: 'New Playlist',
selected: false,
position: 0,
shuffledItems: [],
history: [],
items: Backbone.Collection.extend({
model: PlaylistItem
})
};
},
...
}
我的問題:
如果我創建默認播放列表對象,它爲PlaylistItem初始化一個空的Backbone.Collection。但是,如果我使用已定義的集合創建播放列表對象,則會獲得基本數組而不是Backbone.Collection。這是因爲我正在處理尚未轉換爲Backbone實體的服務器的JSON數據。該數據通過播放列表的默認值進行擴展並覆蓋Backbone.Collection實體。
什麼是用填充的Backbone.Collection進行初始化的正確方法?我可以在Initializes中編寫代碼,它檢查我的items數組的類型,如果它不是Backbone.Collection,我可以創建一個新的Backbone.Collection並添加項目,然後用新項目替換舊數組,但是看起來真的很嗨。
見我回答這個問題的一種模式,模型中的管理集合屬性:http://stackoverflow.com/questions/14315302/backbone-can-an-attribute-contain-a-collection/14315827#14315827 – jevakallio