La conversion des données JSON à l'épine Dorsale de Modèle à l'enfant de la Collection

Je suis en train de travailler avec une liste de lecture de l'objet qui possède des propriétés définissant lui-même comme un PlaylistItem collection.

Lorsque je recevoir des données à partir de mon serveur, je reçois sa réponse JSON dans mon côté client, le succès de la méthode:

success: function (data) {
    console.log("JSON data:", data);

    playlists = _.map(data, function (playlistConfig) {
        return new Playlist(playlistConfig);
    });

    ...
}

Ici, - je convertir mes données JSON dans la liste de lecture des objets. Chaque liste de lecture de l'objet est une colonne vertébrale.De modèle.

Voici comment mes données ressemble:

La conversion des données JSON à l'épine Dorsale de Modèle à l'enfant de la Collection

Et voici ce que le constructeur Playlist ressemble:

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
            })
        };
    },
    ...
}

Mon problème:

Si je créer une liste de lecture de l'objet avec les valeurs par défaut, il initialise avec un vide de la colonne vertébrale.Collection pour PlaylistItem. Cependant, si je créer une liste de lecture de l'objet avec une déjà défini collection, je obtenir une base de tableau et pas de colonne vertébrale.Collection. C'est parce que je suis en train de travailler avec les données JSON à partir du serveur qui n'a pas été converti à l'épine Dorsale des entités encore. Que de données est étendue sur plus de la liste de lecture par défaut et remplace la colonne vertébrale.Collection entité.

Ce qui est une bonne façon d'initialiser un peuplé de la colonne vertébrale.Collection? Je pourrais écrire du code en Initialise qui vérifie le type de mes articles en tableau et si elle n'est pas une colonne vertébrale.Collection j'ai pu créer une nouvelle colonne vertébrale.De collecte et d'ajouter les éléments et puis remplacez le vieux tableau avec la nouvelle, mais qui semble vraiment hoakey.

Voir ma réponse à cette question, un modèle pour la gestion de la collection de propriétés à l'intérieur des modèles: stackoverflow.com/questions/14315302/...

OriginalL'auteur Sean Anderson | 2013-01-21