Guidon Modèle pas en mesure de traiter JSON du Backbone
Guidon est incapable de lire l'objet JSON que je l'envoie en tant que contexte.
Ici, est la fonction qui fait l'appel à la Moustache modèle et donne le contexte:
render: function() {
var source = $("#round").html();
var template = Handlebars.compile(source);
var context = JSON.stringify(this.model);
console.log(context);
var html = template(context);
$(this.el).html(html);
return this;
},
Ici est l'objet JSON que je suis de passage:
{"result":0,"friend1":{"firstName":"Ape","lastName":"Head","fbID":329018,"kScore":99,"profilePic":""},"friend2":{"firstName":"Ape","lastName":"Hands","fbID":32,"kScore":70,"profilePic":""}}
Voici le Guidon modèle:
<script id="round" type="text/x-handlebars-template">
{{#with friend1}}
<h2>{{firstName}} {{lastName}}</h2>
{{/with}}
</script>
J'obtiens l'erreur suivante:
Uncaught TypeError: Cannot read property 'firstName' of undefined
OriginalL'auteur egidra | 2011-08-16
Vous devez vous connecter pour publier un commentaire.
remplacer cette fonction:
avec:
template
doit prendre un objet javascript dans ce cas. JSON.stringify renvoie une représentation sous forme de chaîne d'un objet JSON, pas un objet javascript. Mais ce que vous voulez vraiment sont le modèle d'attributs. Ainsi, vous pouvez accéder à ceux-ci par le biais de la méthode toJSON ou JSON.stringify(ce.modèle), mais alors vous avez besoin de convertir ceux de retour dans un Objet Javascript.Cela vous paraît bizarre, mais essayez:
JSON.parse(JSON.stringify(this.model))
Ah, ça a fonctionné!
Je vais modifier ma réponse et expliquer.
Ok, je vais vérifier vous après votre modifier (je ne sais pas si la vérification ne vous bloque à partir de l'édition, je vais donc attendre.)
OriginalL'auteur Joe
Suffit d'utiliser
.toJSON()
dans le modèle d'appel, qui va transformer le modèle des attributs à un objet json prévu par le guidon:OriginalL'auteur Greg Funtusov
Essayer:
La
attributes
propriété de l'épine Dorsale de l'objet du modèle contient la JS objet de représentation des données. C'est pas super pratique pour y accéder directement comme ça, mais dans ce cas, il pourrait être la chose la plus simple, plutôt que d'essayer d'aller les données via JSON.OriginalL'auteur Dan Ray
Je suis d'accord avec Dan de répondre de la façon la plus rapide de le faire.
Dans le cas d'une liste où vous pourriez avoir besoin de l'id de capturer clics, vous pouvez même le faire
OriginalL'auteur Vincent Cheong