PlaylistItem コレクションだけでなく、それ自体を定義するいくつかのプロパティを持つ Playlist オブジェクトを使用しています。
サーバーからデータを受信すると、クライアント側の成功メソッドで JSON 応答を取得します。
success: function (data) {
console.log("JSON data:", data);
playlists = _.map(data, function (playlistConfig) {
return new Playlist(playlistConfig);
});
...
}
ここでは、JSON データをプレイリスト オブジェクトに変換します。各 Playlist オブジェクトは Backbone.Model です。
私のデータは次のようになります。
Playlist コンストラクタは次のようになります。
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
})
};
},
...
}
私の問題:
デフォルトで Playlist オブジェクトを作成すると、PlaylistItem の空の Backbone.Collection で初期化されます。ただし、定義済みのコレクションを使用して Playlist オブジェクトを作成すると、Backbone.Collection ではなく、基本的な配列が取得されます。これは、バックボーン エンティティにまだ変換されていないサーバーからの JSON データを操作しているためです。そのデータはプレイリストのデフォルトを超えて拡張され、Backbone.Collection エンティティを上書きします。
入力された Backbone.Collection で初期化する適切な方法は何ですか? 項目配列の型をチェックする Initializes にコードを記述できます。それが Backbone.Collection でない場合は、新しい Backbone.Collection を作成して項目を追加し、古い配列を新しい配列に置き換えることができますが、本当にばかげているようです。