2017-08-09 58 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

謝謝,這解決了這個問題,我沒有意識到是我在我的一些對象中有數組會導致一些奇怪的效果,但應該能夠通過對上面的一些修改相對容易地清除它。 –