2013-07-04 1 views
0

У меня есть простой сценарий, когда я возвращаю JSON с вложенными объектами с бэкэндом Rails. У меня возникают проблемы с доступом к атрибутам вложенного объекта.Доступ к вложенным объектам JSON в Backbone

Пример JSON:

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

Сказать, что я хочу, чтобы получить доступ к категории цвета для элемента с идентификатором 35, это прекрасно работает в консоли:

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

В моем эко шаблоны, я получаю ошибка «Невозможно прочитать имя свойства« неопределенного ». Тем не менее, мой шаблон все еще показывает, что я могу получить доступ к объекту с объектом [object Object], если я укажу только

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

Любые идеи? Я уверен, что не понимаю что-то фундаментальное.

ОБНОВЛЕНО

я понял, некоторые категории имена были нулевыми, который вызывает ошибку. Вышеприведенный код должен быть точным.

+0

Я просто понимаю, что не все мои объекты имеют имя, хранящееся, которое выбрасывает неопределенную ошибку. Я должен быть более осторожным :) –

ответ

2

Кажется, что ваш JSON искажен.

Согласно спецификации JSON, вам необходимо обернуть ключи кавычками.

Попробуйте следующие вместо:

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

Кроме того, вы можете поделиться тем, что код, прежде чем <% = model.get ('категория')%>?

+0

Джон, хороший улов, хотя это закончилось тем, что некоторые из моих имен категорий были ноль, что вызывало ошибку! –

+1

А я вижу. Тогда вы можете получить что-то вроде '<% if (typeof model! = 'Undefined' && typeof model.get ('category')! = 'Undefined' && typeof model.get ('category'). Name! = 'undefined' {%> \t <% = model.get ('category'). name%> <% } %> 'чтобы гарантировать, что имя не равно нулю –