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:
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.
OriginalL'auteur Sean Anderson | 2013-01-21
Vous devez vous connecter pour publier un commentaire.
Ne définissez pas votre PlalistItems de Collecte à l'intérieur de défauts, mais au préalable.
Ensuite, créez une méthode initialize sur votre liste de lecture Modèle comme suit:
Découvrez le violon ici: http://jsfiddle.net/georgedyer/r2XKb/
(vous aurez besoin d'ouvrir la console pour voir la collection)
OriginalL'auteur georgedyer
Un autre problème que j'ai rencontré était après l'enregistrement de votre modèle sur le serveur que vous obtiendrez une réponse qui va changer votre incorporé collection en un tableau javascript. Pour remédier à cela, j'ai eu à remplacer la fonction d'analyse sur mon modèle de classe comme ceci:
OriginalL'auteur agaddie