需要有关尘埃模板的建议

时间:2015-10-10 02:13:21

标签: javascript dust.js

我对尘埃(linkedin)完全不熟悉,只是在我的第一个小模板上工作。在编写了明显(但很长)的方法后,我想到了一种使用内联局部优化的方法。 长版看起来像这样:

{#parcours}<tr class="pcsel_pc" id="{id}">
<td class="pcsel_exp_btn"><a href="#"  class="list{?exp}Hide{:else}Exp{/exp}Btn">
<span class="glyphicon glyphicon-{?exp}minus{:else}plus{/exp}"></span></a></td>
<td class="pcsel_col">{name}</td><td class="pcsel_col pcsel_num">{count}</td>
</tr>
{?exp}
{#variants}
<tr class="pcsel_var{?sel} pcsel_sel{/sel}" id="{id}" >
<td class="pcsel_col">&nbsp;</td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{:else}
{#variants}
<tr class="pcsel_var pcsel_hide" id="{id}" >
<td class="pcsel_col">&nbsp;</td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/exp}
{/parcours}

说明: 我有一个包含内部上下文变体的上下文parcours。如果外部上下文中不存在变量exp,我想在内部上下文中使用类pcsel_hide。 这个解决方案有效,但内部上下文的代码包含两次,这是一种愚蠢的行为。所以我想到了一种使用内联部分的方法,它在外部上下文中有条件地设置并在内部上下文中使用:

{#parcours}<tr class="pcsel_pc" id="{id}">
<td class="pcsel_exp_btn"><a href="#"  class="list{?exp}Hide{:else}Exp{/exp}Btn">
<span class="glyphicon glyphicon-{?exp}minus{:else}plus{/exp}"></span></a></td>
<td class="pcsel_col">{name}</td><td class="pcsel_col pcsel_num">{count}</td>
</tr>
{?exp}{<hide/}{:else}{<hide} pcsel_hide{/hide}{/exp}
{#variants}
<tr class="pcsel_var{+hide/}{?sel} pcsel_sel{/sel}" id="{id}" >
<td class="pcsel_col">&nbsp;</td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/parcours} 

这个版本很好而且简短,但它似乎没有完成这项工作。我总是看到类pcsel_hide,即使外部上下文包含exp,因此使用正确的类。 有任何想法吗 ?

1 个答案:

答案 0 :(得分:1)

这是因为在模板渲染开始之前静态评估内联部分。使用相同名称定义的内联部分的最后一个版本获胜。

内联部分不能像这样有条件地评估。你可能想要的是使用像{@eq}这样的逻辑助手。