我对灰尘(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 在外部上下文中不存在,我想在内部上下文中使用类 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}
这个版本很好而且很短,但它似乎没有完成这项工作。即使外部上下文包含 exp 并因此使用正确的类,我也始终看到类 pcsel_hide 。 有任何想法吗 ?
最佳答案
这是因为内联部分是在模板渲染开始之前静态评估的。以相同名称定义的内联部分的最后一个版本获胜。
内联部分不能像这样有条件地评估。您可能想要的是使用像 {@eq}
这样的逻辑助手。
关于javascript - 需要有关灰尘模板的建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33049542/