把手#ee顶级只

时间:2017-08-09 11:55:38

标签: javascript handlebars.js

我刚刚开始使用把手,所以如果这很简单或者已经得到回答(我找不到任何搜索内容),我会提前道歉。

我想在模板中显示一个多级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>

我正在努力的是如何在我的模板中添加一个if来测试该属性是否在其下面有一个子对象而不是在第一部分中显示它。

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

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

您可以通过创建辅助函数来实现此目的:

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

并在你的html中使用它:

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