Solution dans mon itinérairepeuplant collection imbriquée avec JSON imbriqué
Myapp.Routes = Backbone.Router.extend({ init: function(){ user = new User(); user.fetch({user, success: function(response){ user.classlist = new classes(response.attributes.classes); }); } });
J'ai un tableau de JSON sérialisé être renvoyé de mon serveur, et je suis en train de mettre les objets imbriqués dans mes collections imbriquées. Cette réponse, je pensais allait m'y amener, mais il me manque quelque chose. How to build a Collection/Model from nested JSON with Backbone.js
JSON que je suis en train de remplir mon modèle imbriqué avec est
{first_name: "Pete",age: 27, classes: [{class_name: "math", class_code: 42},{class_name: "french", class_code: 18}]}
Je crée mon modèle utilisateur
MyApp.Models.Users = = Backbone.Model.extend({ initialize: function(){ this.classlist = new MyApp.Collections.ClassList(); this.classlist.parent = this; } });
J'avais essayé de suivre l'exemple de l'autre page, et utiliser
this.classlist = new MyApp.Collections.ClassList(this.get('classes')); this.classlist.parent = this;
mais this.get('classes')
retu rns indéfini.
J'ai également essayé d'obtenir le tableau de classes à travers this.attributes.classes, mais c'est aussi indéfini.
------------ mise à jour pour inclure la réinitialisation -------------------- La fonction où j'initialise le L'utilisateur et les classes se trouvent dans les routes utilisateur et sont appelés ré-initialiser. J'utilise cette fonction pour récupérer l'utilisateur et ses classes et stocker l'objet.
re_initialize: function(id){ user = new MyApp.Models.User(); MyApp.editingClasses.url = 'classes/'+id; MyApp.editingClasses.fetch({ success: function(response){ MyApp.editingClasses.parse(response); } }); new MyApp.Views.ClassesInput(); },
Comme vous pouvez le voir, j'appelle la parse
explicitement dans la fonction de la réussite, mais il est de ne pas ajouter les classes à la collection.
Je ne peux pas inclure la 'collection' car pour une raison quelconque je ne peux pas y accéder dans le backbone. le modèle de l'utilisateur, après avoir été renvoyé à backbone comprend le tableau de classes, que j'essaie de mettre dans la collection ClassList
.
L'objet de modèle utilisateur copié à partir du terminal javascript ressemble à ceci.
attributes: Object created_at: "2012-01-05T16:05:19Z" id: 63 classes: Array[3] 0: Object created_at: "2012-01-18T20:53:34Z" id: 295 teacher_id: 63 class_code: 42 updated_at: "2012-01-18T20:53:34Z" class_name: math __proto__: Object 1: Object 2: Object length: 3 __proto__: Array[0]
peut vous envoyer plusieurs codes? la collection par exemple? – trouble
@trouble, j'ai mis à jour la question pour inclure ma fonction 're-initailize' et l'objet comme backbone le voit, bien que comme je le mentionne plus haut, je ne peux pas accéder aux classes par 'user.attributes.classes' – pedalpete