使用Handlebars.js进行模板处理时,使用UUID键处理JSON对象?

时间:2014-07-02 09:18:56

标签: javascript json handlebars.js

我有一个嵌套的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模板中的body属性时遇到Parse错误。任何想法为什么会发生这种情况?

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

2 个答案:

答案 0 :(得分:2)

来自Handlebars expressions上的文档:

  

要引用不是有效标识符的属性,可以使用segment-literal表示法,[:
     {{#each articles。[10]。[#comments]}}
     {{/ each}}

表示您必须在模板中使用{{body.[1cfd0269-1b8f-418f-a7b2-45eb2fa7562b]}}

请参阅http://jsfiddle.net/nikoshr/KVg9P/了解演示。

答案 1 :(得分:0)

是的,这是在网页上工作,angularJS表达式检索它很好,但如果你尝试在JavaScript中做同样的事情,它将返回未定义的错误。例如,如果你尝试这样的东西

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

甚至

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

我不是它的解决方案,但在某处提到JavaScript并不像那些地雷在UUID上签名,我自己仍然在寻找解决方案但是暂时我试图删除我的标志。