迭代Handlebars中的Child元素

时间:2013-03-17 15:41:29

标签: jquery handlebars.js

作为一个例子,我有以下数据集

  dataset = {header: ' header' } 

  dateline = { content: 'list of dates' } 

  monday = [
        { food:'teacake' , drink:'orange' } 
        ]

  tuesday = [
        { food:'eggs' , drink:'beer' } 
        ]    

  dateline.monday = monday
  dateline.tuesday = tuesday
  dataset.dateline = dateline 

我想要做的是使用把手来运行这些日子,我想这可以用孩子来完成。

  <script id="mwl707" type="text/x-handlebars-template">        
  {{#each dateline.children }}
    <span>{{food}} : {{drink}}</span>
  {{/each}}
  </script>

但我不能让它工作,请帮忙吗? JSfiddle

2 个答案:

答案 0 :(得分:1)

我更新了你的小提琴,所以它有效:http://jsfiddle.net/AgCBb/1/

你不应该在[]括号中再次将对象包裹在星期一和星期二,这是一个不必要的额外级别来解析。只需在父对象中创建一个数组Array,因为数组在Handlebars中更容易解析。

dataset = {header: ' header' } //
dateline = { content: 'list of dates' } 
monday  =  { "food":"teacake" , "drink":"orange" }
tuesday = { "food":"eggs" , "drink":"beer" }

dateline.days = []
dateline.days.push(monday)
dateline.days.push(tuesday)

然后你可以像这样解析它:

{{#dateline.days }}
  <span>{{food}} : {{drink}}</span>
{{/dateline.days}}

还要确保将有效的JSON传递给模板。如果不确定您可以使用http://jsonlint.com/

检查您的JSON

答案 1 :(得分:0)

Handlebars不提供迭代对象属性的内置方法。见Handlebars/Mustache - Is there a built in way to loop through the properties of an object?。您可以改为以Handlebars支持的方式格式化数据,例如普通数组。我不会在这里复制代码,它在链接的帖子中。

此外,您不应将<script>标记放在小提琴的javascript平面内。请改用External Resources部分。