2014-11-06 63 views
0

我想从一些JSON使用handlebars表达式建立一个菜单。我需要帮助了解如何遍历json以访问数据值。我如何迭代通过一个JSON结构与把手

这是我现在有:

<ul>Pseudo HTML Code for Menu 
    {{#each}} 
     <li> 
      {{menuGroup.parentMenuName}} 
      <ul><li>menuItems.subMenuName</li></ul> 
     </li> 
    {{/each}} 
</ul> 

{ Pseudo JSON 
    "menu":[ 
     { I have 6 of these arrays and I want to get the Parent menu name and description placed into each li tag 
     "menuGroup":{ 
      "parentMenuName":"MAIN", 
      "description":"myDesc", 
      "displayOrder":1, 
      "menuCategory":"myCat", 
     }, 
     "menuItems":[ 
      { 
       "subMenuName":"Payments", 
       "shortCode":"PAY" 
       "key":"primaryKey" 
      }, 
     ] 
     } 
    ] 
} 

最终,每个{}对象的“菜单”中,我将有一个“礼”标签充满了从嵌套对象数据。任何帮助将不胜感激。我不太熟悉车把表情。

更新:{{菜单[0] .menuGroup.parentMenu}}

换句话说,我有这样的结构。我可以完美地获得这种价值。对于一个项目。我如何循环以获取所有6个数组的值。不只是[0](第一个)

+0

这是JSON还是对象字面值? – 2014-11-07 05:43:27

+0

menuItems是对象数组,如果这也是你所指的。早些时候,我认为有一个链接到另一个类似的职位。这篇文章与我的问题不完全相同,但它帮助我更好地理解了车把。如果那是你,在编辑或许之前,谢谢! (请转贴的链接) – SFox 2014-11-07 13:38:28

回答

7

您已将menuItems定义为对象数组,这就是您的代码无法工作的原因。

"menuItems":[ 
     { 
      "subMenuName":"Payments", 
      "shortCode":"PAY" 
      "key":"primaryKey" 
     }, 
    ] 

要么将​​其更改为

"menuItems": { 
    "subMenuName":"Payments", 
    "shortCode":"PAY" 
    "key":"primaryKey" 
} 

或写模板

<li> 
    {{#menuItems}} 
     {{subMenuName}} 
    {{/menuItems}} 
</li> 

您的代码应工作。

工作示例可以在这里找到。 http://jsfiddle.net/prabhat_rai/mhb1supn/

+0

谢谢,Prabhat!你的解释和代码示例已经帮助!但是,我现在注意到,我的循环在第二次后停止。例如,基于jsfiddle的{{menuGroup.parentMenuName}}的输出是“MAIN,MAIN1,MAIN,MAIN,MAIN,MAIN”奇怪的是,menuItems完美地循环。任何想法为什么parentMenuName循环在第二次之后失败? – SFox 2014-11-07 06:06:20

+1

你可以给我一个提琴手链接,以便我可以检查一次代码 – 2014-11-07 06:12:17

+0

实际上(这很有趣),仔细检查了JSON代码后,我注意到我收到的数据是从我最初开始研究和预期的。代码没有问题。 :)再次感谢您的帮助! – SFox 2014-11-07 13:35:56