2013-07-04 5 views
0

J'ai un scénario simple où je renvoie JSON avec des objets imbriqués avec un backend Rails. J'ai du mal à accéder aux attributs de l'objet imbriqué.Accès aux objets JSON imbriqués dans Backbone

Exemple JSON:

[{ 
    category_id: 2, 
    id: 34, 
    name: "red", 
    category: { 
    name: "color" 
    } 
}, 
{ 
    category_id: 2, 
    id: 35, 
    name: "blue", 
    category: { 
    name: "color" 
    } 
}] 

Dire que je veux accéder à la couleur de la catégorie pour l'élément avec un id de 35, cela fonctionne très bien dans la console:

collection = new App.Collections.Colors() 
collection.fetch() 
model = collection.get(35) 
model.get('category').name 

Dans mes modèles éco, je reçois l'erreur "Impossible de lire la propriété 'name' de undefined." Cependant, mon modèle montre encore que je peux accéder à l'objet avec [object Object] si je n'indiquerai

<%= model.get('category') %> 

Toutes les idées? Je suis sûr que je ne comprends pas quelque chose de fondamental.

MISE À JOUR

j'ai réalisé quelques noms catégorie étaient nuls qui était à l'origine de l'erreur. Le code ci-dessus devrait être bon.

+0

Je me rends compte que tous mes articles n'ont pas de nom stocké, ce qui renvoyait l'erreur non définie. Je devrais être plus prudent :) –

Répondre

2

Il semble que votre JSON est mal formé.

Conformément à la spécification JSON, vous devez placer les clés entre guillemets.

Effectuez les opérations suivantes au lieu:

[{ 
    "category_id": 2, 
    "id": 34, 
    "name": "red", 
    "category": { 
    "name": "color" 
    } 
}, 
{ 
    "category_id": 2, 
    "id": 35, 
    "name": "blue", 
    "category": { 
    "name": "color" 
    } 
}] 

Aussi, pourriez-vous partager ce que le code est avant <% = Model.get ('category')%>?

+0

John, bonne prise, même si ça a fini par dire que certains de mes noms de catégories étaient nuls, ce qui était en train de jeter l'erreur! –

+1

Ah je vois. Ensuite, vous pourriez avoir quelque chose comme '<% if (type de modèle! = 'Undefined' && typeof modèle.get ('catégorie')! = 'Undefined' && typeof model.get ('catégorie'). Name! = 'undefined' {%> \t <% = model.get ('category'). nom%> <% } %> 'pour que ce nom ne soit pas nul –