需要有关灰尘模板的建议
need advice on dust temmplate
我对 dust (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"> </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"> </td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/exp}
{/parcours}
说明:
我有一个包含内部上下文变体的上下文 parcours。如果外部上下文中不存在变量 exp,我想在内部上下文中使用 class 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"> </td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/parcours}
这个版本很好,也很简短,但它似乎无法胜任。我一直看到 class pcsel_hide 即使外部上下文包含 exp 并因此使用正确的 classes。
有任何想法吗 ?
这是因为内联部分是在模板渲染开始之前静态评估的。使用相同名称定义的内联部分的最后一个版本获胜。
内联部分不能像这样有条件地求值。您可能想要的是使用像 {@eq}
.
这样的逻辑助手
我对 dust (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"> </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"> </td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/exp}
{/parcours}
说明: 我有一个包含内部上下文变体的上下文 parcours。如果外部上下文中不存在变量 exp,我想在内部上下文中使用 class 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"> </td><td class="pcsel_var pcsel_col">{name}</td>
<td class="pcsel_col pcsel_num">{count}</td>
</tr>
{/variants}
{/parcours}
这个版本很好,也很简短,但它似乎无法胜任。我一直看到 class pcsel_hide 即使外部上下文包含 exp 并因此使用正确的 classes。 有任何想法吗 ?
这是因为内联部分是在模板渲染开始之前静态评估的。使用相同名称定义的内联部分的最后一个版本获胜。
内联部分不能像这样有条件地求值。您可能想要的是使用像 {@eq}
.