Templates “可能优化此粉尘”;逻辑;?

Templates “可能优化此粉尘”;逻辑;?,templates,optimization,dust.js,Templates,Optimization,Dust.js,我在一个灰尘部分工作,如果条件满足,我想显示一个固定的标题 首先,我想知道用户是否说他们在给定的城市工作。如果他们不在我列表中的任何城市,我不想显示任何东西……除非他们住在夏威夷。然后我想显示相同的标题 {@select key=workingCity} {@eq value=1}Fixed Header{/eq} {! Pittsburgh !} {@eq value=2}Fixed Header{/eq} {! Paris !} {@eq value=3}Fixed Header

我在一个灰尘部分工作,如果条件满足,我想显示一个固定的标题

首先,我想知道用户是否说他们在给定的城市工作。如果他们不在我列表中的任何城市,我不想显示任何东西……除非他们住在夏威夷。然后我想显示相同的标题

{@select key=workingCity}
  {@eq value=1}Fixed Header{/eq} {! Pittsburgh !}
  {@eq value=2}Fixed Header{/eq} {! Paris !}
  {@eq value=3}Fixed Header{/eq} {! Phoenix !}
  {@default}
    {@eq key=state value=50} {! Hawaii !}
      Fixed Header
    {/eq}
  {/default}
{/select}
有没有办法避免将“固定标题”放置在四个不同的位置?

我知道我可以引用另一个部分,其中有一个特定的标题…但我需要将该部分引用放在四个位置


这是优化了吗?

如果您使用的是足够新的灰尘和灰尘辅助工具版本,那么您可以使用新的
{@any}
{@none}
辅助工具——它们正是针对这个用例的

{@select key=workingCity}
  {@eq value=1/} {! Pittsburgh !}
  {@eq value=2/} {! Paris !}
  {@eq value=3/} {! Phoenix !}
  {@any}Fixed Header{/any}
  {@none}
    {@eq key=state value=50} {! Hawaii !}
      Fixed Header
    {/eq}
  {/none}
{/select}
这使您可以使用两个头部实例,这可能已经足够好了。这些助手的文档位于

您还可以将更多的逻辑从模板中带到上下文助手中,这是Dust真正擅长的。这样,逻辑仍保留在Javascript中,模板仅用于显示

{#showFixedHeader}
  Fixed Header
{:else}
  Optionally something else!
{/showFixedHeader}
在你的背景下:

{
  "showFixedHeader": function(chunk, context) {
    var workingCity = context.get('workingCity');
    var state = context.get('state');
    return [1,2,3].indexOf(workingCity) > -1 || state === 50;
  }
}

现在,您的模板非常可读,如果您添加第四个城市,则模板根本不需要更改。

非常感谢!我不得不使用惊人的{any}和{none}标记,因为我无法在我的环境中访问模板的上下文。也就是说,我对结果很满意!非常感谢你!