2014-07-02 44 views
2

我有一個嵌套的JSON對象,它看起來像這樣在使用Handlebars.js進行模板處理時使用UUID鍵處理JSON對象?

review:{ 
    body:{ 
    "1cfd0269-1b8f-418f-a7b2-45eb2fa7562b": "Text1", 
    "38d14dcd-6e70-46f9-8d81-9c5237cb7393": "Text2", 
    "01485828-39ef-4929-9e96-19758375eb9b": "Text3", 
    } 
    created_at: "2014-06-25T07:42:19Z", 
    id: "ea07aaa3-9db6-4868-b6f1-0887ef77f8ba", 
    product_id: "eb5a7c9c-c20d-4539-b04f-5a3fd8d26c87", 
    updated_at: "2014-06-25T07:42:19Z" 
    written_by: "09b3c6f1-cbcb-4544-8cc3-d073d17a8552", 
    written_on: "2014-06-25" 
} 

的JS是相當直接:

var context = {review:review}; 
html = template(context); 

模板是相當大的,但相關的部分是這裏

<textarea class="review-body"> {{body["1cfd0269-1b8f-418f-a7b2-45eb2fa7562b"]}} </textarea> 

我在嘗試訪問html模板中的正文屬性時收到Parse錯誤。任何想法爲什麼發生這種情況?

Uncaught Error: Parse error on line 5: 
...iew-edit-context">{{body["1cfd0269-1b8f-418f-a7b2-45eb2fa7562b"]}}</tex 
-----------------------^ 
Expecting 'ID', 'DATA', got 'INVALID' 
+0

你的模板的標記是什麼樣的? – chridam

+0

它的一個相當大的模板,但相關的部分是在這裏 {{體[#1cfd0269-1b8f-418f-a7b2-45eb2fa7562b]}} – papdel

回答

2

從文檔上Handlebars expressions

要引用一個屬性,它是不是有效的標識符,您可以使用段的文字符號,[:
{{#each文章[10 ] [#評論]}}
{{/每}}

這意味着你必須在你的模板中使用{{body.[1cfd0269-1b8f-418f-a7b2-45eb2fa7562b]}}

查看http://jsfiddle.net/nikoshr/KVg9P/的演示。

+0

謝謝,這個作品。應該多學習一些文檔! – papdel

0

是的,這是工作在網頁和angularJS表達式檢索它很好,但如果你嘗試在JavaScript中做同樣的事情,它將返回未定義的錯誤。例如,如果你嘗試這樣

console.log(body.[1cfd0269-1b8f-418f-a7b2-45eb2fa7562b]); 

甚至

console.log(body['1cfd0269-1b8f-418f-a7b2-45eb2fa7562b']); 

我不爲它的解決方案,但地方提JavaScript是不喜歡那些地雷UUID的簽名,自己還在尋找解決方案但暫時我試圖刪除我的標誌。