2013-07-04 54 views
0

我有一個簡單的場景,我返回帶有Rails後端的嵌套對象的JSON。我無法訪問嵌套對象的屬性。在Backbone中訪問嵌套的JSON對象

例JSON:

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

說我要訪問類別顏色項目與35中的ID,這工作正常的控制檯:

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

在我的生態模板,我得到錯誤,「無法讀取未定義的屬性'名稱。」但是,如果我只指示

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

任何想法?我的模板仍然顯示我可以使用[object Object]訪問該對象。我確定我不瞭解一些基本的東西。

修訂

我意識到一些類別名稱是零這是造成錯誤。上面的代碼應該沒問題。

+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%> <% } %>'確保名稱不爲零 –