2017-08-09 156 views
0

我刚刚开始使用把手,所以如果这很简单或已经得到解答(我找不到任何搜索),我提前致歉。Handlebars#只有顶级

我有一个多级json对象,我想在我的模板中显示。但是,我只想显示顶层元素,如果他们有子属性则不显示。

当前模板:

<div id="example"> 
{{#each myObject}} 
    {{@key}}: {{this}}<br> 
{{/each}} 
</div> 

例子中的物体:

{ 
a: value1, 
b: value2, 
c: value3, 
d: { a: 1, b: 2, c: 3 }, 
e: value5 
} 

我的期望(简体)输出是:

<div> 
a: value1<br> 
b: value2<br> 
c: value3<br> 
e: value5<br> 
</div> 

<div> 
d<br> 

a: 1<br> 
b: 2<br> 
c: 3<br> 
</div> 

我所挣扎的是,如果如何添加到我的模板,以测试属性是否有一个在它下面的子对象,而不是显示在第一部分。

然后,对于每个有子对象的属性,将其显示在(或其他位置)下方并遍历其每个子属性。

任何帮助将不胜感激。

回答

1

您可以通过创建一个辅助函数实现这一点:

Handlebars.registerHelper('checkForJson', function (a) { 
     if(typeof a =='object') 
    { 
     return true; 
    } 
    return false; 
}); 

而且在你使用这个网站:

<div id="example"> 
       {{#each .}} 
      {{#if (checkForJson this) }} 
        {{#each this}} 
         {{@key}}: {{this}}<br> 
        {{/each}} 
      {{else}} 
        {{@key}}: {{this}}<br> 
      {{/if}} 
     {{/each}} 
</div> 
+0

谢谢,这解决了这个问题,我没有意识到是我在我的一些对象中有数组会导致一些奇怪的效果,但应该能够通过对上面的一些修改相对容易地清除它。 –